【发布时间】:2018-01-08 04:32:01
【问题描述】:
在我的网站中,在 Internet Explorer 中运行时发生了一些奇怪的事情。我的网站和 API 是分开托管的。 API 使用基于令牌的授权进行匿名身份验证。 MVC 网站具有 Windows 身份验证。大多数情况下,一切都按预期工作。但有时发生的情况是从 javascript 调用 API 时,我的授权更改为 NTLM 而不是 Bearer。我给出了相同场景的一些截图。
成功的 API 调用:
401 未经授权的呼叫:
我的Ajax如下:
$.ajax({
url: src,
type: 'GET',
cache: false,
async: true,
data: (parameters),
headers: {
'Authorization': 'Bearer ' + sessionStorage.getItem('token')
},
contentType: 'application/json'
dataType: 'json',
success: successCallback,
error: function (xhr, textStatus, errorThrown) {
ErrorPopup("error occur");
}
,
beforeSend: function (xhr, settings) { xhr.setRequestHeader('Authorization', 'Bearer ' + sessionStorage.getItem('token')); }
});
我已经调试了所有 API 调用,并且始终将授权标头设置为 Bearer ...,但不知何故,NTLM 正在控制它并使我的 API 调用未经授权。请分享一些见解,我该如何解决这个问题。我无法更改IIS 中的身份验证,因为它超出了我的控制范围。如果您需要更多输入,我也可以提供。
【问题讨论】:
标签: ajax internet-explorer authorization ntlm bearer-token