我在 Google Chrome 扩展程序中,有权限"*://*/*"
,我正在尝试从 XMLHttpRequest 切换到Fetch API。
该扩展存储用户输入的登录数据,以前直接放入 XHR 的 open() 调用以进行 HTTP 身份验证,但在 Fetch 下不能再直接用作参数。对于 HTTP 基本身份验证,绕过此限制是微不足道的,因为您可以手动设置授权标头:
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 访问其他字段吗?