[英]Cross-domain AJAX request error on HTTP 200
我正在编写一个非常基本的Facebook应用程序,但是遇到了跨域AJAX请求(使用jQuery)的问题。
我编写了一个代理页面,以通过我通过AJAX调用的cURL向图形发出请求。 我可以在浏览器中访问该页面,并看到它具有正确的输出,但是通过始终请求页面会导致jQuery触发错误处理程序回调。
所以我有两个文件:
代理,执行cURL请求
<?php
//Do some cURL requests, manipulate some data
//return it as JSON
print json_encode($data);
?>
facebook画布,其中包含此AJAX调用
$.getJSON("http://myDomain.com/proxy.php?get=stuff",
function(JSON)
{
alert("success");
})
.error(function(err)
{
alert("err");
});
使用Firebug检查该调用会显示其返回的HTTP代码为200 OK
,但始终会触发错误处理程序,并且不会返回任何内容。 无论我是否设置Content-Type: application/json
发生这种情况 。
在使用AJAX之前,我已经用PHP编写了返回JSON的API,并且从未遇到过这种麻烦。
是什么导致请求始终触发错误处理程序?
最近,我遇到了同样的问题,我的问题是由于SSL,网页和API之间存在域差异。
网页上有一个HTTP地址(http://myDomain.com),而我向JQuery请求的内容位于同一域,但是HTTPS协议(https://myDomain.com)。 浏览器(在本例中为Chrome)认为域是不同的(第一个域使用HTTP ,第二个域使用HTTPS ),只是由于协议的缘故,并且因为请求响应类型为“ application / json”,所以浏览器做了不允许。
基本上,该请求可以正常工作,但您的浏览器不允许响应内容。
我必须添加一个“ Access-Control-Allow-Origin ”标题才能使其工作。 如果您是同一情况,请在此处查看: https : //developer.mozilla.org/en/http_access_control 。
希望对您有帮助,我自己很头疼。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.