gpt4 book ai didi

javascript - 如何修复 Firefox 中的跨域请求失败

转载 作者:行者123 更新时间:2023-12-01 03:37:49 34 4
gpt4 key购买 nike

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

 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, 但 FIREFOX 给了我这个错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at the url. Reason: Cors-request failed.


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

最佳答案

我通过执行以下操作修复了它:
A. 您在运行脚本的主机上需要一个 .htaccess。

<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"
其次,ERP系统也需要设置表头。如果标题设置正确,您可以使用 curl 检查。
B. 另一种选择:如果您不想使用标题,或者无法设置某些标题,那么您可以使用 CURL 来完成这项工作:
在我的表单上单击提交时,我的脚本将调用一个 .php 文件,其中包含以下代码:
<?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);



?>
它有效!没有更多的cors错误!并将数据发送到服务器并由服务器接收:)

关于javascript - 如何修复 Firefox 中的跨域请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33118900/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com