检查 ajax 请求是否在大多数情况下失败
Checking if ajax request fails most of the time
Hy 那里,我正在使用这个php代码来检查是否通过ajax发出请求:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {echo 'is ajax';}
这段代码对我有用,直到今天大多数时间启动失败。我已经用回显检查了 $_SERVER['HTTP_X_REQUESTED_WITH'],有时返回 XMLHttpRequest 大多数时候什么都不返回,有时返回这个 XMLHttpRequestOl。
经过长时间的搜索,我找到了这个答案,并使用该代码,每次通过 ajax 请求测试时都会返回 xmlhttprequest。
谁能解释为什么会有这种行为?
非常感谢,祝你有美好的一天!
apache_request_headers() 的输出:
["Host"]=>
string(9) "example.com"
["Connection"]=>
string(10) "keep-alive"
["Accept"]=>
string(46) "application/json, text/javascript, */*; q=0.01"
["Origin"]=>
string(16) "http://example.com"
["X-Requested-With"]=>
string(14) "XMLHttpRequest"
["User-Agent"]=>
string(109) "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
["Referer"]=>
string(23) "http://example.com"
["Accept-Encoding"]=>
string(13) "gzip, deflate"
["Accept-Language"]=>
string(35) "ro-RO,ro;q=0.8,en-US;q=0.6,en;q=0.4"
["Cookie"]=>
string(36) "PHPSESSID=0c3vufj32s6v47o2oq38cj2rh2"
阿帕奇版本是
Server version: Apache/2.4.10 (Debian)
Server built: Nov 28 2015 14:05:48
Server's Module Magic Number: 20120211:37
尝试检查X-Requested-With
标头以确定 Ajax 请求。众所周知,它可以与常见的JavaScript框架一起使用:
$headers = getallheaders();
if ('XMLHttpRequest' == $headers['X-Requested-With']) {
// This is Ajax request!
}
Symfony使用这种方式在他们的Request::isXmlHttpRequest()中检查XML HTTP请求。
相关文章:
- 在什么情况下需要同时使用compile&链接函数的角度
- 为什么在这种情况下,“This”确实充当javascript函数中的私有成员
- 在这种情况下,如何正确对齐显示
- 在以下情况下解释 >= 和 <= 运算符的行为
- 在以下情况下,如何设置图像的宽度
- 如何在默认情况下将主干视图设置为singleton
- 如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败
- 在什么情况下,应该.deep.equal失败,但使用JSON.stringify进行比较工作正常
- regex有效,但在区分大小写的情况下失败
- 返回按钮回调函数在特定情况下失败或未启动
- 检查 ajax 请求是否在大多数情况下失败
- 在大多数情况下,POST 请求是否可以替代 GET 请求
- 有人能解释为什么JS正则表达式在这种情况下失败吗
- 如何使JavaScript在这种情况下以更明显的方式失败
- 玉的状况在我的情况下失败了
- 在什么情况下,on事件可能会失败
- mongo findAndUpdateOne在我的情况下失败了
- animate() jquery在我的情况下失败了
- 我的Quicksort实现在降序情况下失败
- 我如何使我的离子按钮刷新所有离子视图.(在大多数情况下,更可取的是重新评估ng开关)