我正在构建API并打算允许来自特定域的API调用。我使用'curl'运算符来进行API调用而不设置标题:
curl_setopt($ch, CURLOPT_HEADER, 0);
所以,当我检查$ _SERVER ['HTTP_REFERER']时,它是'NULL'
现在,如何检查PHP是否从特定域进行调用?
由于
答案 0 :(得分:1)
您必须检查特定域是否代表$_SERVER['REMOTE_ADDR']
<?php
$ip = gethostbyname('www.example.com');
$valid_call = $ip == $_SERVER['REMOTE_ADDR'] ? true : false;
请记住,永远不要信任HTTP标头。它们可能被操纵而IP可能不会被操纵。
答案 1 :(得分:0)
有两种方法可以在带有cURL的标题中传递REFERER,
予。 Manualy CURLOPT_REFERER
curl_setopt($ch, CURLOPT_REFERER, 'http://example.com');
II。 Automaticaly 或使用 CURLOPT_AUTOREFERER
curl_setopt($ ch,CURLOPT_AUTOREFERER,true);