所以我知道这是一个常见问题,并且看到很多人在谈论它,但觉得我的情况很独特,可能不像其他人那么复杂。
我有一个主机网站,并尝试使用 JQ 和 PhoneGap 构建 iPhone 应用程序。
我希望人们能够从应用程序将他们的分数传递到我的主域,但我遇到了可怕的情况:
“Access-Control-Allow-Origin 不允许 Origin null。”
当我尝试调用它时:
$.ajax({
type: "POST",
url: 'http://www.homesite.com/thephppage.php',
data: {
'guid': '12333-54',
'score': 52,
'initials': 'tod'
},
success: function (data) {
try {
}
else {
}
}
catch (err) {
alert(err);
}
},
error: function (xhr) {
alert(xhr.responseText);
}
});
由于这是调用我拥有的域,我可以采取一些简单的措施来纠正此问题吗?
谢谢。
时间
您拥有两个域的事实并不会改变 ajax 请求不能跨域的事实。
由于这是调用我拥有的域,我可以采取一些简单的措施来纠正此问题吗?
Yes
看看设置CORS http://www.w3.org/TR/cors/,这应该允许您发出这些跨域请求。另外,根据jQuery 文档 http://api.jquery.com/jQuery.ajax/, jQuery 应该支持 CORS 请求——主要是
xhr字段(已添加 1.5.1) Map 要设置的 fieldName-fieldValue 对的映射
在本机 XHR 对象上。例如,您可以使用它来设置
如果需要,跨域请求的 withCredentials 设置为 true。
$.ajax({ url: a_cross_domain_url, xhrFields: {
withCredentials: true } });在 jQuery 1.5 中,withCredentials 属性未传播到本机 XHR,因此
要求它的 CORS 请求将忽略此标志。为此,我们
如果您需要使用 jQuery 1.5.1+,建议使用它。
目前,由于 Firefox 中的一个错误,.getAllResponseHeaders()
尽管 .getResponseHeader('Content-Type') 返回空字符串
返回非空字符串,自动解码 JSON CORS 响应
Firefox 中不支持 jQuery。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)