【发布时间】:2013-09-12 15:29:36
【问题描述】:
这样检查 XHR 的代码非常常见:
if (
isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
) {
// ajax happened
}
为什么这里总是使用strtolower 而不仅仅是与XMLHttpRequest 进行比较?这只是偏执狂还是有真正的原因?
【问题讨论】:
-
某些框架等可以在没有“正确”字符大小的情况下发送该字符串。如果您确定您的代码针对“xmlhttprequest”发送“XMLHttpRequest”,则可以简化该行。
-
@WesleyMurch — 您是否正在编写通过 CORS 跨域访问的服务?或者您是否有不属于您团队的前端开发人员?
-
@Quentin 为了便于讨论,是的。
-
要问的问题是:您是否 100% 世界上所有现有的浏览器都发送正确的大小写,并且所有现有的 Web / 代理 / 缓存服务器都保持大小写不变。如果没有,那么最好这样做。
-
由于到目前为止的cmets,我现在相信我对
HTTP_X_REQUESTED_WITH有一个根本的误解。这个值从哪里来,在什么时候可以修改?
标签: php ajax xmlhttprequest