首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复Firefox中的跨源请求失败

如何修复Firefox中的跨源请求失败
EN

Stack Overflow用户
提问于 2015-10-14 07:12:58
回答 3查看 15K关注 0票数 4

我有一个javascript文件,其中我想将json数据发送到ERP系统:

代码语言:javascript
复制
 var formData1 = JSON.stringify($('#msform').serializeObject());
    $.ajax({
        url:'http://102.101.101.11:80/c/orders',
        type:'POST',
        data:formData1,
        crossDomain: true,
        dataType: 'json',
        jsonpCallback: 'callback',
        success: function(data) {
            //window.location.href = "http://www.petlooza.com";
            console.log(data);
        }
    });

这个脚本适用于chrome和IE,,但是火狐给了我这个错误:

跨源请求被阻止:相同的原产地策略不允许在url中读取远程资源。原因:Cors-请求失败。

如何解决这个问题?--参见下面的解决方案!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-14 14:00:45

--我通过执行以下操作来修复它:

在运行脚本的主机上需要一个.htaccess。

代码语言:javascript
复制
<FilesMatch "\.(php)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"
Header set Access-Control-Max-Age "1000"
Header set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

其次,企业资源规划系统还需要设置报头。您可以使用curl检查标头是否正确设置。

B.另一种选择:如果您不想使用标头,或者无法设置某些标头,那么可以使用CURL来完成这项工作:

在我的表单上单击submit时,我的脚本将调用一个.php文件,其中包含以下代码:

代码语言:javascript
复制
<?php
//
//code to send json to lotus webservice without cors errors
//
$jsondata = $_GET['jsondata'];
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"102.101.101.11:80/c/orders");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$jsondata);

// in real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS,
//          http_build_query(array('postvar1' => 'value1')));

// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec ($ch);


curl_close ($ch);



?>

而且起作用了!不要再犯错误了!并将数据发送到服务器,并由服务器接收到:)

票数 2
EN

Stack Overflow用户

发布于 2015-10-14 07:33:57

我建议查看以下资源:

Firefox CORS request giving 'Cross-Origin Request Blocked' despite headers,这是刚才StackOverflow提出的一个问题。

policy可能会帮助您调试问题,它演示了Mozilla如何在CORS上实现自己的安全策略。

CORS是一个关于Mozilla的CORS实现的深度服务器端文档。

可能是您通过不同的协议或主机请求它,从这里的示例中我们无法看出这一点,但这是常见的故障模式。

票数 1
EN

Stack Overflow用户

发布于 2015-11-12 15:43:45

如果您在另一边控制代码,则可以使用JSONP来获取数据,并且可以避免CORS的所有问题。

更新:前几天我写了关于JSONP的博客:http://blog.texasswede.com/calling-a-notes-web-agent-from-another-server-using-jsonp/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33118900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档