我试图向服务器发出CORS请求,我知道在这种情况下需要身份验证。我不想做的是浏览器弹出提示输入凭据的对话框。
在理想的世界里,我会,
1)发出CORS请求
2)看到它需要身份验证
3)获取WWW-Authenticate标题
4)使用新的身份验证标头集
重新发出CORS请求当我尝试此操作时,初始请求将返回,浏览器会立即提示输入用户名和密码。
在幕后我有办法验证自己是否可以获取WWW-Authenticate标头来检查它是否是摘要或基本身份验证所需。此时,就XMLHttpRequest而言,标头为空。
我假设要自己保存,浏览器已将其剥离,因为它会处理它。状态现在也设置为0而不是401。
var client = = new XMLHttpRequest();
client.open('GET', src, true);
client.onreadystatechange = function () {
if (client.readyState === XMLHttpRequest.DONE && client.status === 200) {
// Success
}
if (client.readyState === XMLHttpRequest.DONE && client.status === 401) {
var wwwHeader = client.getResponseHeader("WWW-Authenticate"); /// <-- this is nullwhenever I use a CORS request
// create authentication header to reissue request
}
if (client.readyState === XMLHttpRequest.DONE && client.stataus === 0) {
// the browser hates me and what I have done to it <-- this is where I end up
}
我是否从根本上误解了某些内容?
编辑:更新了示例中的评论