Chr*_*ris 5 ajax jquery json cors
我正在研究从本地(file:// access)html应用程序中跨域使用.NET WCF域服务.该应用程序使用jQuery进行AJAX调用.
如果没有在服务器上进行身份验证(即使用匿名身份验证),我已成功检索到JSON格式的数据,其中包含CORS"Access-Control-Allow-Origin:*"标头,并且没有标头的JSONP格式.
现在,我正在尝试了解使用JSON(而不是JSONP)格式数据进行身份验证和CORS标头时的行为.
以下jQuery代码将向服务器发送请求,而服务器又以"HTTP/1.1 401 Unauthorized"响应.
$.ajax({
url: myUrl,
dataType: 'json',
cache: false,
complete: function () { /* do stuff */ },
timeout: 5000,
data: myData
});
Run Code Online (Sandbox Code Playgroud)
以下jQuery代码不向服务器发出请求,并立即抛出异常"访问受限制的URI被拒绝",代码1012.
$.ajax({
url: myUrl,
dataType: 'json',
cache: false,
complete: function () { /* do stuff */ },
timeout: 5000,
username: "chris",
password: "password",
data: myData
});
Run Code Online (Sandbox Code Playgroud)
我理解并期待第一个案例.有人可以向我解释第二种情况下的例外情况吗?我原以为要求至少要求.
编辑:Grrr,这是在FF 10.0.2中.Chrome似乎按照我的预期行事,这是一个FF问题吗?
如果在跨源请求中使用cookie或HTTP基本身份验证用户名/密码字段等凭据,则还需要将XHR上的"withCredentials"标志设置为true.在jQuery中,这是通过$ .ajax调用上的xhrFields属性完成的.将代码更改为已读
$.ajax({
url: myUrl,
dataType: 'json',
cache: false,
complete: function () { /* do stuff */ },
timeout: 5000,
username: "chris",
password: "password",
data: myData,
xhrFields: { withCredentials: true }
});
Run Code Online (Sandbox Code Playgroud)
此外,另一端的服务器不能使用带有凭据的Access-Control-Allow-Origin标头的"*".它必须为发送给它的Origin标头提供完全匹配.
归档时间: |
|
查看次数: |
4528 次 |
最近记录: |