【发布时间】:2010-11-15 22:01:30
【问题描述】:
我想知道:如果我是路由器、数据包检查器、防火墙或其他数据包嗅探设备(我很高兴我不是),我是否能够区分传统 HTTP 请求和一个 XMLHttpRequest?从理论上讲,是否有可能某些 ISP 或(比方说)手机数据提供商可以在不中断 HTTP 服务的情况下限制 XMLHttpRequest 流量?
谢谢。
【问题讨论】:
标签: http xmlhttprequest tcp
我想知道:如果我是路由器、数据包检查器、防火墙或其他数据包嗅探设备(我很高兴我不是),我是否能够区分传统 HTTP 请求和一个 XMLHttpRequest?从理论上讲,是否有可能某些 ISP 或(比方说)手机数据提供商可以在不中断 HTTP 服务的情况下限制 XMLHttpRequest 流量?
谢谢。
【问题讨论】:
标签: http xmlhttprequest tcp
在数据包级别没有任何东西可以区分它们,因为 XMLHttpRequest 是一个 HTTP 请求。 XML 位指的是,如果响应是 xml Content-Type,那么 responseXML 方法将返回一个 DOM 对象。
【讨论】:
据我所知,没有根本的区别 - 所以从路由器等的角度来看,您一般无法判断。
但我确实相信大多数流行的 Javascript 工具包都会在其XMLHttpRequests 中添加一个 HTTP 标头来识别它们。不过我忘记了名字……
编辑:这里是an example(Google 对“jquery xmlhttprequest header”的热门搜索,没有引号)显示 jQuery 显然将 X-Requested-With 设置为“XMLHttpRequest”。
【讨论】:
在数据包、网络、会话级别:否。
在应用程序级别,可能是使用特定于 HTTP 的设备,例如过滤代理。
我会检查 HTTP 请求标头。他们可能(只是可能)有一些差异。但我敢肯定,任何差异都会非常特定于浏览器,并且很可能正确的 JavaScript 代码可以插入适当的标头以使其完全无法区分。
简而言之:检查 HTTP 标头;但不要指望它是通用的,更没有用处。
【讨论】: