HTTP 200上的跨域AJAX请求错误

时间:2012-03-10 22:01:26

标签: php ajax facebook

我正在编写一个非常基本的Facebook应用程序,但我遇到了跨域AJAX请求的问题(使用jQuery)。

我已经编写了一个代理页面,通过cURL向图表发出请求,我正在通过AJAX调用。我可以在浏览器中访问该页面并看到它具有正确的输出,但是通过请求页面始终会导致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,从未遇到过这种麻烦。

什么可能导致请求始终触发错误处理程序?

1 个答案:

答案 0 :(得分:0)

最近我遇到了同样的问题,我的问题是由于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

我希望能帮到你,我自己也很头疼。