首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP中是否存在$_SERVER['HTTP_X_REQUESTED_WITH']?

PHP中是否存在$_SERVER['HTTP_X_REQUESTED_WITH']?
EN

Stack Overflow用户
提问于 2010-04-05 23:38:39
回答 7查看 73.5K关注 0票数 72

在整个Internet上,甚至在Stack Overflow上,人们都表示,检查请求是否为AJAX的一个好方法是执行以下操作:

代码语言:javascript
运行
复制
if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) {...}

但是,我在official PHP documentation中没有看到$_SERVER['HTTP_X_REQUESTED_WITH']

当我尝试执行以下操作时:

代码语言:javascript
运行
复制
echo $_SERVER['HTTP_X_REQUESTED_WITH'];

不会输出任何内容。

我做错了什么吗?因为我真的希望能够使用$_SERVER['HTTP_X_REQUESTED_WITH'],如果它可用的话。

EN

回答 7

Stack Overflow用户

发布于 2010-04-05 23:41:45

$_SERVER中的变量实际上并不是PHP的一部分,这就是为什么您在PHP文档中找不到它们的原因。它们是由Web服务器准备的,Web服务器将它们传递给脚本语言。

据我所知,X-Requested-With是由大多数主要框架的Ajax函数发送的,但不是全部(例如,Dojo在两年前才添加了它:#5801)。因此,考虑到@bobince的评论,可以肯定地说,它通常不是一个100%可靠的方法来确定一个请求是否是一个AJAX请求。

唯一100%安全的方法是与请求一起发送一个预定义的标志(例如GET变量),并让接收页面检查该标志的存在。

票数 64
EN

Stack Overflow用户

发布于 2011-02-25 02:50:25

不要忘记,您可以很容易地使用cURL欺骗任何标头,如下所示

代码语言:javascript
运行
复制
curl_setopt($ch,CURLOPT_HTTPHEADER,array("X-Requested-With : XMLHttpRequest"));
票数 27
EN

Stack Overflow用户

发布于 2010-04-05 23:40:21

HTTP_开头的HTTP键是从$_SERVER请求头部生成的。在本例中,是指X-Requested-With标头。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2579254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档