【问题标题】:Cross domain ajax request (jsonp) not working in Firefox (35.x) only跨域 ajax 请求 (jsonp) 仅在 Firefox (35.x) 中不起作用
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多