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