我創建了一個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