我在一个具有权限的Google Chrome扩展程序中,"*://*/*"
并且试图将XMLHttpRequest切换到Fetch API。
该扩展存储了用户输入的登录数据,该数据曾经直接放入XHR的HTTP Auth的open()调用中,但是在Fetch下不再可以直接用作参数。对于HTTP Basic Auth,规避此限制是微不足道的,因为您可以手动设置Authorization标头:
fetch(url, {
headers: new Headers({ 'Authorization': 'Basic ' + btoa(login + ':' + pass) })
} });
但是,HTTP Digest Auth需要更多的交互性。您需要读取服务器通过401响应发送给您的参数,以制作有效的授权令牌。我尝试WWW-Authenticate
使用以下代码片段读取响应标头字段:
fetch(url).then(function(resp) {
resp.headers.forEach(function(val, key) { console.log(key + ' -> ' + val); });
}
但是我得到的只是这个输出:
content-type -> text/html; charset=iso-8859-1
根据Chrome的开发人员工具,这本身是正确的,但是仍然缺少大约6个字段。如果我使用resp.headers.get("WWW-Authenticate")
(或与此有关的任何其他字段),则只会得到null
。
有机会使用Fetch API进入这些其他字段吗?
access-control-expose-headers
-或可能access-control-allow-headers
(我们将二者都放入)中的值。