使用获取 API 读取响应标头
2022-08-30 05:05:55
我使用的是 Google Chrome 扩展程序,具有 权限,并且我正在尝试从 XMLHttpRequest 切换到 Fetch API。"*://*/*"
该扩展存储用户输入的登录数据,这些数据以前直接放入 XHR 对 HTTP 身份验证的 open() 调用中,但在 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访问这些其他字段?