【问题标题】:how to allow cross-origin in [PHP] [duplicate]如何在[PHP]中允许跨域[重复]
【发布时间】:2017-11-12 14:49:29
【问题描述】:

我有 2 个域。

我尝试使用window.open JavaScript 标记在域 1 中打开域 2 的 URL,在用户在域 2 上执行一些操作后,然后使用 window.opener 将结果放入域 1 的 div 中 一切正常,但在最后一步,我在 chrome 控制台中收到跨域错误Uncaught DOMException: Blocked a frame with origin "http://example.com" from accessing a cross-origin.。

如何在 PHP 中允许跨域访问域 1?

编辑

我的问题不可能与 this question 重复,因为我问的是 PHP。

解决方案

打开 PHP 标签后,只需在代码开头添加header("Access-Control-Allow-Origin: *");,这将允许从任何来源(网站)访问。

如果您想限制访问,请将* 替换为原始(网站)网址,例如header("Access-Control-Allow-Origin: http://example.com/");

【问题讨论】:

    标签: php


    【解决方案1】:
    <?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);
        }
    
    ?>
    

    【讨论】:

    • 谢谢 我必须在哪里添加它?在域 1 或域 2 中?
    • 我在域 1 中添加了您的代码,但仍然报同样的错误
    猜你喜欢
    • 1970-01-01
    • 2015-10-11
    • 2015-05-22
    • 2011-10-13
    • 2014-08-03
    • 2012-04-27
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多