【发布时间】:2015-04-15 08:07:22
【问题描述】:
我有这样的跨域请求:
$.ajax({
crossDomain: true,
dataType: 'jsonp',
url: 'http://mysite.ru/comp/ajax/api.php',
jsonp: 'callback',
data: {
data_1: data_1,
opt: 'opt'
},
success: function(data){
console.log(data);
},
error: function(e) {
console.log(e);
}
});
在服务器端,我有如下代码:
$callback=$_REQUEST['callback'];
$url = "http://xn--b1afabpanwaea8aeld1f.xn--p1ai"; //this is russian site
header("Access-Control-Allow-Origin: $url");
header("Access-Control-Allow-Credentials: true");
echo $callback.'('.json_encode($data).')';
它适用于 Chrome、IE,但 Firefox 不返回响应。在控制台中我看到了这个:
readyState:4
status:404
statusText:"error" ...
在请求标头中没有选项“Origin”,查询类型为“plain”。如果我在FF查询的开发者面板中选择并点击“编辑并发送”,那么请求是成功的,但是在请求头中添加了“Origin”并且类型设置为“html”。
【问题讨论】:
-
您在控制台中看到任何错误吗?
-
不,只有我的调试中的文本 (console.log(e);) "readyState:4 status:404 statusText:"error"。就是这样((
-
如果需要,我可以提供指向真实网站的链接。
-
肯定会有所帮助:)
-
此外,您还不清楚您要做什么。你是在尝试 jsonp 还是 cors,因为它们是两个不同的东西 :)
标签: jquery ajax firefox cross-domain jsonp