跨域ajax请求(jsonp)仅在Firefox(35.x)中不起作用

时间:2015-02-14 08:35:52

标签: jquery ajax firefox cross-domain jsonp

我有这样的跨域请求:

$.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查询的Developer面板中选择并单击"编辑并发送",则请求成功,但在请求标题中添加" Origin"并键入设置为" html"。

1 个答案:

答案 0 :(得分:0)

此请求暂停在提交表单上,另一个请求在href上。 Mozila无法在这些情况下发送请求(仅限mozila)。您只将它挂在静态标签上,如果成功重定向或提交。 现在一切正常。