Ich versuche, eine Abrufanforderung mit Fetch zu erstellen. Der Antrag sieht wie folgt aus:Erstellen einer Abrufanforderung mit Fetch - only-Optionen ist senden
fetch('https://requestb.in/14ikb6j1', {
method: 'get',
headers: {
'Authorization': 'Token token=xxxxx'
}});
Wenn ich diese Anfrage an meine eigenen Server zu machen, ist es nicht auf die Optionen jedes Mal anfordern. Ich kann nicht herausfinden warum.
Wenn ich diese Anfrage an requestbin mache, gibt es zuerst eine Option Anfrage. Nach Erhalt der Antwortoptionen wird die eigentliche Abrufanforderung jedoch nie ausgeführt.
Dies ist, was erhalten requestbin:
OPTIONS /14ikb6j1
HEADERS
Referer: http://localhost:9000/
Host: requestb.in
Total-Route-Time: 0
Via: 1.1 vegur
Accept-Encoding: gzip
Cf-Visitor: {"scheme":"https"}
Cf-Ipcountry: NL
Cf-Ray: 36edd35d1cad2b28-AMS
Cf-Connecting-Ip: 37.153.231.90
Connection: close
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: */*
Connect-Time: 1
Access-Control-Request-Method: GET
Content-Length: 0
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
X-Request-Id: 69b120c1-0f18-454b-a7fd-91f082252a06
Access-Control-Request-Headers: authorization
Origin: http://localhost:9000
Dies ist, was Chrom-Protokolle:
Das Merkwürdigste ist, erhalte ich eine 200 - OK
Status als Ergebnis. Die Konsole jedoch meldet sich noch diese:
Fetch API cannot load https://requestb.in/14ikb6j1 . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:9000 ' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. :9000/#/branching:1 Uncaught (in promise) TypeError: Failed to fetch
Aber wenn ich diesen Antrag stellen mit Postman es funktioniert:
GET /14ikb6j1
HEADERS
Cf-Ipcountry: NL
Cf-Ray: 36eddb797ebf7223-AMS
Authorization: Token token=xxxx
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Total-Route-Time: 0
Via: 1.1 vegur
Connection: close
Cf-Connecting-Ip: 37.153.231.90
Connect-Time: 0
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
Postman-Token: 57486701-6f9a-4aab-be1b-776f0d376920
Accept: */*
Host: requestb.in
X-Request-Id: 73a7a35e-0d89-41fd-b760-2aa952349871
Accept-Encoding: gzip
Cf-Visitor: {"scheme":"https"}
Cache-Control: no-cache
Wie kann ich diese Anforderung mit Authentifizierung bekommen machen Header arbeiten?
''Content-Type': 'application/json'' für eine GET-Anfrage. Ist das richtig? – Forivin
@Forivin Sorry, du hast Recht. Durch das Entfernen dieser Inhaltstyp-Header ändert sich nichts. – Randy