【发布时间】:2017-09-06 18:36:25
【问题描述】:
我正在使用具有"*://*/*" 权限的 Google Chrome 扩展程序,我正在尝试从 XMLHttpRequest 切换到 Fetch API。
该扩展存储用户输入的登录数据,这些数据过去直接放入 XHR 的 open() 调用以进行 HTTP Auth,但在 Fetch 下不能再直接用作参数。对于 HTTP Basic Auth,绕过这个限制是微不足道的,因为您可以手动设置 Authorization 标头:
fetch(url, {
headers: new Headers({ 'Authorization': 'Basic ' + btoa(login + ':' + pass) })
} });
HTTP Digest Auth 然而需要更多的交互性;您需要读取服务器通过其 401 响应发送给您的参数以制作有效的授权令牌。我试过用这个 sn-p 读取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 访问其他字段?
【问题讨论】:
标签: javascript google-chrome-extension