我有一个人们可以嵌入他们网站的Javascript小部件。
我想使用简单的跨域get请求来引入哈希。
但是我需要我的PHP脚本才允许来自我存储在数组中的一系列域的此跨域请求。
我可以在PHP脚本(不在.htaccess
或iptables中)中查找get请求的源(主机名)吗?
答案 0 :(得分:4)
考虑到客户端(用户的浏览器)可以向您发送任何想要的内容,我会说没有办法确定您的脚本是从哪个网站调用的:
$_SERVER['REMOTE_HOST']
无效$_SERVER['HTTP_REFERER']
似乎没问题,但事实并非如此:
所以,我会说这个问题没有真正的解决方案,至少在服务器端(如果我错了,我很想知道!)
但也许你可以在客户端做点什么:写这些时,我想到了谷歌地图,它是API密钥系统:
alert
消息,说“ Google Maps API服务器拒绝了您的请求。这可能是因为此站点上使用的API密钥已注册到其他网站。“
alert
对最终用户来说真的很烦人,我认为没有人会想要在他们的网站上显示警报,因为他们正在使用您的服务而没有授权。 也许你可以看一下谷歌地图是如何做到的: - )
答案 1 :(得分:2)
您可以使用$_SERVER变量。特别是 $ _ SERVER ['REMOTE_HOST'],但请参阅下面的警告:
但是,您的网络服务器必须是 配置为创建此变量。 例如,在Apache 中,您需要 HostnameLookups在httpd.conf 内 它存在。也可以看看 gethostbyaddr()
答案 2 :(得分:1)
如果请求来自JavaScript,您可以检查HTTP引用标头($ _SERVER ['HTTP_REFERER'])。但是,它是可选的 - 某些代理或安全程序会从HTTP请求中删除引用者标头。