如何在[PHP]中允许跨域[重复]

Posted

技术标签:

【中文标题】如何在[PHP]中允许跨域[重复]【英文标题】:how to allow cross-origin in [PHP] [duplicate] 【发布时间】: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/");

【问题讨论】:

【参考方案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 中添加了您的代码,但仍然报同样的错误

以上是关于如何在[PHP]中允许跨域[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php 如何在php数组中允许重复键[重复]

Vue 加入 withCredentials 后无法进行跨域请求

如何在我的 Django Rest Framework 项目中允许所有跨域请求?

处理跨域的方式

在 Heroku 上的 Django 应用中启用 CORS

如何在 ng-repeat 中允许重复?