CORS在Firefox上被阻止

时间:2015-01-04 17:09:28

标签: php jquery ajax firefox cors

当服务器#2上的页面“[domain2] /unrelated.php”上的用户点击a时,我想使用jQuery在服务器#1上运行带有数据的异步帖子“[domain1] /first.php”链接到服务器#2上的“[domain2] /second.php?var1=data1?var2=data2”。我不想等“[domain1] /first.php”完成或返回任何回复。

  1. “[domain1] /first.php”设置为处理数据(它也在服务器#1上执行cURL到“[domain2] /unrelated2.php”)并且不回显任何内容,并以“出口;”或“?>”线。
  2. “[domain2] /second.php”处理数据并回显页面。

    • 当它同步时,它适用于Chrome,Opera和Firefox。 (但由于数据处理速度很慢,我希望避免在发布之后等待点击链接之前的等待)
    • 当它异步时,它适用于Chrome或Opera。
    • Firefox在“[domain1] /first.php”控制台的异步时出现CORS错误:
  3.   

    “阻止跨源请求:同源策略不允许   在[domain1] /first.php上读取远程资源。这可以修复   通过将资源移动到同一域或启用CORS。“


    我已经尝试将其添加到“[domain1] /first.php”的顶部:

    // 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);
    }
    

    “[domain2] /unrelated.php”上的jQuery AJAX调用是:

        $.ajax({
            url: '[domain1]/first.php',
            type: 'POST',
            data: parameters
        });
    

    用于测试的所有三个浏览器都是最新的。使用的jQuery是1.7.2。


    我可以检测到Firefox并且只使它使用同步帖子,但考虑到它在其他两个浏览器中异步工作,它似乎不太令人满意。

    有任何想法或建议吗?

    我可以发布请求和响应标头的样子,但我现在无法这样做,我将在稍后编辑它们,我道歉。 通过搜索,这似乎主要是服务器#2从服务器#1的原始帖子发回的标题的问题,所以我假设发布这些标题对解决这种情况至关重要? 也许我必须取消注释注释“// exit(0);”?

    谢谢你的时间!

0 个答案:

没有答案