Php Firefox上阻止CORS
我想使用jQuery在服务器1上运行一个异步post,当用户在服务器2上的页面“[domain2]/unrelated.php”上单击“[domain2]/second.php?var1=data1?var2=data2”的链接时,将数据发送到服务器2上的“[domain1]/first.php”。我不想等待“[domain1]/first.php”完成或返回任何响应Php Firefox上阻止CORS,php,jquery,ajax,firefox,cors,Php,Jquery,Ajax,Firefox,Cors,我想使用jQuery在服务器1上运行一个异步post,当用户在服务器2上的页面“[domain2]/unrelated.php”上单击“[domain2]/second.php?var1=data1?var2=data2”的链接时,将数据发送到服务器2上的“[domain1]/first.php”。我不想等待“[domain1]/first.php”完成或返回任何响应 “[domain1]/first.php”被设置为处理数据(它也会在服务器#1上卷曲到“[domain2]/unrelated2
- 它在Chrome、Opera和Firefox中同步工作。(但由于数据处理的原因,速度很慢,我想避免发布后和点击链接之前的等待)
- 它在Chrome或Opera中异步工作
- Firefox在控制台中为“[domain1]/first.php”提供了一个CORS错误,该错误是异步的:
我已尝试将其添加到“[domain1]/first.php”的顶部: 对“[domain2]/unrelated.php”的jQuery AJAX调用是: 用于测试的所有三种浏览器都是最新的。使用的jQuery是1.7.2
我可以检测到Firefox并只让它使用同步post,但考虑到它在其他两种浏览器中异步工作,这似乎很难令人满意 有什么想法或建议吗 我可以发布请求和响应标题的外观,但我现在无法这样做,我将在以后编辑它们,我道歉。 通过四处搜索,这似乎主要是服务器2从服务器1发送的原始帖子中返回的邮件头的问题,因此我认为发布这些邮件头对于解决此问题至关重要? 也许我必须取消注释已注释的“//exit(0);”
谢谢你的时间 谢谢您的建议,但该页面仅建议:header(“访问控制允许源代码:”);我已经尝试过,但这不是一个好的做法。我使用了chrome,因为它告诉我不允许使用内容类型。然后我用谷歌搜索错误,发现我需要在apache配置中使用以下行:Header set Access Control Allow Headers“Origin,X-Requested-With,content-type,Accept”
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
//exit(0);
}
$.ajax({
url: '[domain1]/first.php',
type: 'POST',
data: parameters
});