【发布时间】:2011-11-16 07:54:21
【问题描述】:
我的网站上托管了一个 PHP 脚本,它根据传递的 GET 参数输出一个值。
其他网站通过 PHP 函数 file_get_contents 从他们自己的 PHP 脚本中调用此脚本,并使用 url 和获取参数,并仅返回请求的值。
我正在尝试仅允许某些域访问此脚本,并且一直在使用 HTTP_REFERER 检查谁在调用该脚本。
if (isset($_SERVER['HTTP_REFERER'])) // check if referrer is set
{
echo $_SERVER['HTTP_REFERER']; // echo referrer
}
else
{
echo 'No referrer set'; // echo failure message
}
当我使用 file_get_contents 时,我没有设置引荐来源网址,但如果我使用从页面到具有上述代码的脚本的点击链接,引荐来源网址会正确显示。
我是否使用了错误的函数 (file_get_contents) 来调用外部脚本,有人可以建议正确的函数还是应该这样做?
非常感谢任何帮助。 谢谢
【问题讨论】:
-
请记住,HTTP“Referer”标头是一个可选标头——站点无需将其发送给您,而且很容易被伪造。如果您真的只希望某些人使用您的资源,最好使用某种形式的身份验证。
-
file_get_contents 默认是一个完全独立/全新的请求。不会有引用者,因为没有页面引用该连接。如果您希望它发送引用标头,则必须设置流上下文:php.net/manual/en/function.stream-context-create.php
标签: php file-get-contents referrer