kzen.dev
  • Frågor
  • Taggar
  • Användare
Meddelanden
Belöningar
Registrering
När du har registrerat dig kommer du att få information om svar och kommentarer på dina frågor.
Logga in
Om du redan har ett konto loggar du in för att kontrollera nya meddelanden.
Det kommer att finnas belöningar för frågor, svar och kommentarer.
Mer
Källa
Redigera
Mr Jedi
Mr Jedi
Question

Varför får min JavaScript-kod felet "No 'Access-Control-Allow-Origin' header is present on the requested resource" när Postman inte gör det?

Jag försöker göra auktorisering med hjälp av JavaScript genom att ansluta till RESTful API som är inbyggt i Flask. När jag gör begäran får jag dock följande fel:

XMLHttpRequest cannot load http://myApiUrl/login. Ingen 'Access-Control-Allow-Origin' header finns på den begärda resursen. Origin 'null' är därför inte tillåtet att komma åt.

Jag vet att API:et eller fjärrresursen måste ställa in huvudet, men varför fungerade det när jag gjorde begäran via Chrome-tillägget Postman?

Detta är förfrågningskoden:

$.ajax({
    type: "POST",
    dataType: 'text',
    url: api,
    username: 'user',
    password: 'pass',
    crossDomain : true,
    xhrFields: {
        withCredentials: true
    }
})
    .done(function( data ) {
        console.log("done");
    })
    .fail( function(xhr, textStatus, errorThrown) {
        alert(xhr.responseText);
        alert(textStatus);
    });
2309 2013-11-17T19:29:06+00:00 3
shady sherif
shady sherif
Redigerad fråga 2019ör oktober 2019 в 12:06
Programmering
javascript
jquery
cors
same-origin-policy
flask-restless
Popular videos
CORS Error & Solutions In A Nutshell [Cross Origin Resource Sharing]
CORS Error & Solutions In A Nutshell [Cross Origin Resource Sharing]
för 3 år sedan
CORS, Preflight Request, OPTIONS Method | Access Control Allow Origin Error Explained
CORS, Preflight Request, OPTIONS Method | Access Control Allow Origin Error Explained
för 4 år sedan
How to solve S3 CORS file error with "Access-Control-Allow-Origin" header block
How to solve S3 CORS file error with "Access-Control-Allow-Origin" header block
för 2 år sedan
CORS POLICY No  'Access-Control-Allow-Origin' header is present on request | SOLVED | 100% WORKING
CORS POLICY No 'Access-Control-Allow-Origin' header is present on request | SOLVED | 100% WORKING
för 2 år sedan
« Föregående
Nästa »
Den här frågan har 1 svar på engelska, för att läsa dem logga in på ditt konto.
Solution / Answer
MD.  Sahib Bin Mahboob
MD. Sahib Bin Mahboob
2013ör november 2013 в 7:49
2013-11-17T19:49:53+00:00
Mer
Källa
Redigera
#22839404

Om jag har förstått det rätt gör du en XMLHttpRequest till en annan domän än den som din sida ligger på. Så webbläsaren blockerar den eftersom den av säkerhetsskäl vanligtvis tillåter en begäran i samma ursprung. Du måste göra något annat när du vill göra en förfrågan över en annan domän. En handledning om hur man gör det är Using CORS.

När du använder postman begränsas de inte av denna policy. Citat från Cross-Origin XMLHttpRequest:

Vanliga webbsidor kan använda XMLHttpRequest-objektet för att skicka och ta emot data från fjärrservrar, men de begränsas av samma ursprungspolicy. Utvidgningarna är inte lika begränsade. Ett tillägg kan prata med fjärrservrar utanför sitt ursprung, så länge det först begär behörigheter som sträcker sig över flera ursprung.

Peter Mortensen
Peter Mortensen
Redigerat svar 2014ör januari 2014 в 12:46
1246
0
 Gavin
Gavin
2014ör februari 2014 в 12:42
2014-02-22T00:42:04+00:00
Mer
Källa
Redigera
#22839405

Om du kan hantera JSON i gengäld kan du försöka använda JSONP (observera P i slutet) för att tala mellan domäner:

$.ajax({
  type: "POST",
  dataType: 'jsonp',
  ...... etc ......

Lär dig mer om hur du arbetar med JSONP här:

JSONP - i huvudsak ett konsensusbaserat hack för skripting mellan olika webbplatser - har öppnat dörren för kraftfulla innehållsmixar. Många framstående webbplatser tillhandahåller JSONP-tjänster som ger dig tillgång till deras innehåll via ett fördefinierat API.

Hristiyan Dodov
Hristiyan Dodov
Redigerat svar 2017ör juli 2017 в 6:14
338
0
Alin Razvan
Alin Razvan
2014ör mars 2014 в 8:53
2014-03-12T08:53:45+00:00
Mer
Källa
Redigera
#22839406

Det finns ett problem med Ajax på flera domäner. Du måste vara säker på att du får åtkomst till dina filer på samma sökväg http:// utan www. (eller åtkomst från http://www. och posta till samma sökväg inklusive www.) som webbläsaren betraktar som en annan domän när du får åtkomst via en www.-sökväg, så att du kan se var problemet ligger. Du skriver till en annan domän och webbläsaren blockerar flödet på grund av ursprungsproblemet.

Om API inte är placerad på samma värd som du begär från blockeras flödet och du måste hitta ett annat sätt att kommunicera med API:et.

Alin Razvan
Alin Razvan
Redigerat svar 2015ör april 2015 в 9:31
66
0
Lägg till en fråga
Kategorier
Alla
Teknik
Kultur / fritid
Livet / Konst
Vetenskap
Professionell
Företag
Användare
Alla
Ny
Populära
1
Daniel Gogov
Registrerad för 2 dagar sedan
2
工藤 芳則
Registrerad för 1 vecka sedan
3
Ирина Беляева
Registrerad för 1 vecka sedan
4
Darya Arsenyeva
Registrerad för 2 veckor sedan
5
anyta nuam-nuam (LapuSiK)
Registrerad för 2 veckor sedan
DA
DE
EL
ES
FI
FR
ID
IT
JA
LT
NL
NO
PT
RO
RU
SL
SV
TR
ZH
© kzen.dev 2023
Källa
stackoverflow.com
under licens cc by-sa 3.0 med angivande av