Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Firefox上阻止CORS_Php_Jquery_Ajax_Firefox_Cors - Fatal编程技术网

Php Firefox上阻止CORS

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

我想使用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.php”),不回显任何内容,并以“exit;”或“?>”行结束
  • “[domain2]/second.php”处理数据并回显页面

    • 它在Chrome、Opera和Firefox中同步工作。(但由于数据处理的原因,速度很慢,我想避免发布后和点击链接之前的等待)
    • 它在Chrome或Opera中异步工作
    • Firefox在控制台中为“[domain1]/first.php”提供了一个CORS错误,该错误是异步的:
  • “阻止跨来源请求:同一来源策略不允许 正在[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
        });