Ich bin in einer Google Chrome-Erweiterung mit Berechtigungen für "*://*/*"
und versuche, von XMLHttpRequest zur Fetch-API zu wechseln .
Die Erweiterung speichert Anmeldedaten für Benutzereingaben, die früher direkt in den open () -Aufruf des XHR für HTTP Auth eingefügt wurden, aber unter Fetch nicht mehr direkt als Parameter verwendet werden können. Bei HTTP Basic Auth ist das Umgehen dieser Einschränkung trivial, da Sie einen Autorisierungsheader manuell festlegen können:
fetch(url, {
headers: new Headers({ 'Authorization': 'Basic ' + btoa(login + ':' + pass) })
} });
HTTP Digest Auth erfordert jedoch mehr Interaktivität. Sie müssen die Parameter lesen, die der Server Ihnen mit seiner 401-Antwort sendet, um ein gültiges Autorisierungstoken zu erstellen. Ich habe versucht, das WWW-Authenticate
Antwortheaderfeld mit diesem Snippet zu lesen :
fetch(url).then(function(resp) {
resp.headers.forEach(function(val, key) { console.log(key + ' -> ' + val); });
}
Aber alles was ich bekomme ist diese Ausgabe:
content-type -> text/html; charset=iso-8859-1
Was an sich richtig ist, aber laut Chrome's Developer Tools fehlen noch 6 weitere Felder. Wenn ich resp.headers.get("WWW-Authenticate")
(oder eines der anderen Felder für diese Angelegenheit) benutze , bekomme ich nur null
.
Gibt es eine Chance, mit der Fetch-API zu diesen anderen Feldern zu gelangen?
access-control-expose-headers
- oder möglicherweiseaccess-control-allow-headers
(wir setzen sie in beide ein).