2014-10-31 61 views
0

我有非常基本的SOAP服務器:檢查請求腳本的URL在SOAP

$soap = new SoapServer(null, array('uri' => '')); 

$soap->addFunction('myFunction'); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $soap->handle(); 
} else { 
    echo "Available functions:"; 
    foreach ($soap->getFunctions() as $func) { 
     echo "\n\t" . $func; 
    } 
} 

現在,我有一組特定的域(我自己),從中我期望的要求,並沒有其他人 - 在說數組:

$allowed_domains = array('http://www.example.com', 'http://www.otherexample.com'); 

我怎麼可以創建一個「白名單」,在只有這些領域實際上可以使這個SOAP服務器腳本的請求(任何其他人將被拒絕訪問)?

謝謝!

回答

0

的檢查可以如下:

if(!in_array($_SERVER['HTTP_REFERER'], $allowed_domains) { 
    // operation is denied 
    exit 0; 
} 

希望幫助:)

+0

謝謝您的快速答覆!不幸的是,'$ _SERVER ['HTTP_REFERER']'沒有設置... – 2014-10-31 12:18:32

+0

嘗試用gethostbyaddr($ _ SERVER ['REMOTE_ADDR'])而不是$ _SERVER ['HTTP_REFERER'] – 2014-10-31 13:12:09

+0

恐怕這並不實際返回請求域,但服務器所有者的域(這不是我的域)。我想我只需要通過請求用戶名和密碼來代替「白名單」系統。 – 2014-10-31 16:17:08