如何在[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]中允许跨域[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Vue 加入 withCredentials 后无法进行跨域请求