2014-10-31 59 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