相关疑难解决方法(0)

使用Fetch API读取响应头

我在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进入其他领域?

javascript google-chrome-extension

44
推荐指数
6
解决办法
3万
查看次数