2016-11-04 64 views
0

我創建了一個PHP RESP API應用程序。我需要使用其API從另一個域訪問此應用程序。是否可以指定CORS域頭可以允許cors只從一個域訪問php

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Headers: *"); 
... 

上面的代碼允許CORS從每一個domain.But我需要只允許來自特定域的CORS。

+0

然後而不是「*」,你應該指定域。 – Federkun

+0

如果它是兩個域 –

+0

'Access-Control-Allow-Origin'標頭控制給定頁面可以發送請求的內容,除了原始頁面。所以它控制着「來」,而不是「來自」。你需要在你的API裏面指定這樣的頭文件,但是在向這個API發出請求的頁面中。 – arkascha

回答

0

此問題的解決方案是使用$ _SERVER ['HTTP_ORIGIN']變量來確定請求是否來自允許的域。它然後設置這樣的:

試試下面的代碼:

header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); 
0

試試下面的代碼:

<?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'); 
?> 
0

這可能不是回答你的眼前問題,但我個人使用下面的確保只有在適當的主機上才能獲取內容。

$host = 'example.com'; 

if ($_SERVER['HTTP_HOST'] != $host) { 
    header("Location: http://$host"); 
    exit; 
} 

在.htaccess中,我設置了Header set X-Frame-Options "SAMEORIGIN"以進一步限制訪問。