【发布时间】:2013-11-05 00:56:48
【问题描述】:
我正在尝试对返回 json(不是 jsonp)的页面进行 ajax 调用(使用 IE 10),但我不断收到“401 - 未经授权:由于凭据无效而拒绝访问”。该站点在 IIS 中设置为使用“Windows 身份验证”,但是,如果我更改站点以启用匿名身份验证,则该调用有效。下面是我用来拨打电话的代码。我的电话缺少什么或者我需要在我的网络服务器上更改什么? Windows 身份验证当前设置为在 Windows 身份验证上使用 NTLM 身份验证。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="scripts/jquery-2.0.3.min.js"></script>
<script src="scripts/base64.js"></script>
<script type="text/javascript">
function QueryMyData() {
var postUrl = 'http://mydevpage/storage.ashx';
var data = 'AssetNumber=102405';
$.support.cors = true;
$.ajax({
type: "POST",
url: postUrl,
data: data,
dataType: 'json',
crossDomain: true,
cache: false,
username: "mydomain.net\\myuser",
password: "password",
beforeSend: function (xhr) {
xhr.withCredentials = true;
},
success: function (result) {
if (result) {
if (result.error)
alert(result.error);
else
alert(result.id);
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert('Unknow Error:' + thrownError + ajaxOptions + xhr.status + " " + xhr.statusText);
}
});
}
QueryMyData();
</script>
</head>
<body>
</body>
</html>
【问题讨论】:
-
嗯,一件事是
"mydomain.net\myuser"可能是错误的;那可能应该是"mydomain.net\\myuser"。 -
username = "mydomain.net\myuser",和以下行无效,crossDomain不需要,$.support.cors不需要,scripts/jquery-2.0.3.min.js 不起作用IE8 和 CORS 在没有插件的情况下无法在带有 jQuery 的 IE8 中工作。这里有很多错误。 -
另一个是
username : "...",应该是,而不是username = "...", -
感谢 cmets。我进行了建议的更改并在 IE 10 和 Chrome 中进行了尝试,但仍然没有运气。我仍然收到相同的 401 错误。其他想法?
-
这个页面在哪个域上?
mydevpage?你还有crossDomain设置。
标签: javascript jquery ajax security