在整个互联网上,甚至包括在Stack Overflow中,人们声称检查请求是否是AJAX的好方法是执行以下操作:
if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) {...}
Run Code Online (Sandbox Code Playgroud)
但是,我没有$_SERVER['HTTP_X_REQUESTED_WITH']在官方PHP文档中看到
当我尝试执行以下操作时:
echo $_SERVER['HTTP_X_REQUESTED_WITH'];
Run Code Online (Sandbox Code Playgroud)
什么都没输出.
难道我做错了什么?因为我真的希望能够使用$_SERVER['HTTP_X_REQUESTED_WITH']它是否可用.
浏览器如何向与尾随斜杠相关的主机发送网址是否存在一致性和/或标准?
这意味着,如果我在http://example.comWeb浏览器的地址栏中输入,浏览器是否会添加尾部斜杠(http://example.com/)?
我有http://example.com/index.html,从HTML中使用JavaScript(XmlHttpRequest)来调用Web服务http://example.com/json/?a=...&b=...
Web服务返回到index.htmlJSON信息数组,然后显示在其上index.html.
由于任何人都可以查看源代码index.html并查看我如何调用JSON Web服务(http://example.com/json/),如何阻止人们直接调用我的JSON Web服务?
由于Web服务本质上是一个开放的读取到我的数据库,我不希望人们滥用网络服务,并开始直接从Web服务获取数据,启动DoS攻击我的服务器,获取比他们应该更多的信息,等等.
更新:
有没有办法限制http://example.com/json/只来自同一服务器(IP)和URL请求的请求http://example.com/index.html?
意思是,无法http://example.com/json/检测到Requester是($_SERVER['REQUEST_URI'] == http://example.com/index.html)并且只允许那个?
我有一个PHP脚本来检查HTTP Referer.
if ($_SERVER['HTTP_REFERER'] == 'http://www.example.com/') {...}
Run Code Online (Sandbox Code Playgroud)
然而,这看起来似乎是不安全的...因为如果用户进入'http://example.com/'或'http://www.ExaMple.com'(两者都不符合相等测试)会发生什么.
问题:确保HTTP Referer来自哪个更好的相等性测试'example.com'?