2016-09-29 7 views
0

Wenn ich versuche, den Authorzation-Header wie folgt zu setzen, wird der Header nicht an den Server für die Anforderung gesendet. Was ist der richtige Weg, um den Authorization-Header mit Fetch zu setzen?Berechtigungsheader wird nicht gesendet, wenn Fetch verwendet wird

let options = { 
    method: 'GET', 
    headers: new Headers({ 
    Authorization: 'Bearer ...' 
    }) 
}; 
fetch('/api/somedata', options).then(function(response) { console.log(response); }; 

bearbeiten

In Chrom-Entwickler-Tools auf der Registerkarte Netzwerk erhalte ich dies für die Anfrage:

GET /api/somedata HTTP/1.1 
Host: someserver.azurewebsites.net 
Connection: keep-alive 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 
Accept: */* 
Referer: http://localhost:3000/somedata 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 

Hinweis gibt es keine Header Authorization gesetzt wird.

Und der Server antwortet:

HTTP/1.1 401 Unauthorized 
Content-Length: 61 
Content-Type: application/json; charset=utf-8 
Server: Microsoft-IIS/8.0 
WWW-Authenticate: Bearer 
X-Powered-By: ASP.NET 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE 
Date: Thu, 29 Sep 2016 03:16:15 GMT 
+0

Ich kann nicht reproduzieren Ihr Problem; Ich testete mit dem gleichen Code wie Sie geschrieben und die 'Authorization' Header ist in der Tat an den Server gesendet ... – Frxstrem

+0

Die' Authorization' Header ist nicht in der Liste der [verbotenen Header-Namen] (https: //developer.mozilla .org/de-DE/docs/Glossar/Forbidden_header_name), also gibt es keinen Grund, warum es nicht funktionieren sollte. Sind Sie * sicher * werden die Anfragen ohne Autorisierungskopf gesendet? Wenn Sie Chrome oder Firefox verwenden, können Sie Anforderungsheader anzeigen, indem Sie die Entwicklerkonsole mit F12 öffnen und Ihre Abrufanforderung auf der Registerkarte "Netzwerk" finden. Wenn es da ist, gibt es wahrscheinlich ein Problem auf der Serverseite. – Frxstrem

+0

Ja Ich bin mir sicher, dass es nicht den Autorisierungsheader setzt. – user193427

Antwort

0

Ich glaube, Ihr Server die folgende Antwort-Header umfassen muss:

Access-Control-Allow-Headers: Authorization 
+0

Wurde das Problem dadurch behoben? Ich habe das gleiche Problem, aber das Hinzufügen hat mir nicht geholfen. Meine Frage hier http://stackoverflow.com/questions/40900977/custom-request-headers-not-sein-sent-with-a-javascript-fetch-request – JasonDavis

Verwandte Themen