我创建了一个PHP RESP API应用程序。我需要使用其API从另一个域访问此应用程序。是否可以指定CORS域头可以允许cors只从一个域访问php
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
...
上面的代码允许CORS从每一个domain.But我需要只允许来自特定域的CORS。
我创建了一个PHP RESP API应用程序。我需要使用其API从另一个域访问此应用程序。是否可以指定CORS域头可以允许cors只从一个域访问php
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
...
上面的代码允许CORS从每一个domain.But我需要只允许来自特定域的CORS。
此问题的解决方案是使用$ _SERVER ['HTTP_ORIGIN']变量来确定请求是否来自允许的域。它然后设置这样的:
试试下面的代码:
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
试试下面的代码:
<?php
// Cross-Origin Resource Sharing Header
header('Access-Control-Allow-Origin: http://base.com');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept');
?>
这可能不是回答你的眼前问题,但我个人使用下面的确保只有在适当的主机上才能获取内容。
$host = 'example.com';
if ($_SERVER['HTTP_HOST'] != $host) {
header("Location: http://$host");
exit;
}
在.htaccess中,我设置了Header set X-Frame-Options "SAMEORIGIN"
以进一步限制访问。
然后而不是“*”,你应该指定域。 – Federkun
如果它是两个域 –
'Access-Control-Allow-Origin'标头控制给定页面可以发送请求的内容,除了原始页面。所以它控制着“来”,而不是“来自”。你需要在你的API里面指定这样的头文件,但是在向这个API发出请求的页面中。 – arkascha