【问题标题】:What's the packet-level difference between an XMLHttpRequest and a regular HTTP request?XMLHttpRequest 和常规 HTTP 请求之间的数据包级别的区别是什么?
【发布时间】:2010-11-15 22:01:30
【问题描述】:

我想知道:如果我是路由器、数据包检查器、防火墙或其他数据包嗅探设备(我很高兴我不是),我是否能够区分传统 HTTP 请求和一个 XMLHttpRequest?从理论上讲,是否有可能某些 ISP 或(比方说)手机数据提供商可以在不中断 HTTP 服务的情况下限制 XMLHttpRequest 流量?

谢谢。

【问题讨论】:

    标签: http xmlhttprequest tcp


    【解决方案1】:

    在数据包级别没有任何东西可以区分它们,因为 XMLHttpRequest 是一个 HTTP 请求。 XML 位指的是,如果响应是 xml Content-Type,那么 responseXML 方法将返回一个 DOM 对象。

    【讨论】:

      【解决方案2】:

      据我所知,没有根本的区别 - 所以从路由器等的角度来看,您一般无法判断。

      但我确实相信大多数流行的 Javascript 工具包都会在其XMLHttpRequests 中添加一个 HTTP 标头来识别它们。不过我忘记了名字……

      编辑:这里是an example(Google 对“jquery xmlhttprequest header”的热门搜索,没有引号)显示 jQuery 显然将 X-Requested-With 设置为“XMLHttpRequest”。

      【讨论】:

        【解决方案3】:

        在数据包、网络、会话级别:否。

        在应用程序级别,可能是使用特定于 HTTP 的设备,例如过滤代理。

        我会检查 HTTP 请求标头。他们可能(只是可能)有一些差异。但我敢肯定,任何差异都会非常特定于浏览器,并且很可能正确的 JavaScript 代码可以插入适当的标头以使其完全无法区分。

        简而言之:检查 HTTP 标头;但不要指望它是通用的,更没有用处。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-24
          • 2012-08-29
          • 2016-04-22
          • 2019-07-07
          • 1970-01-01
          • 2015-08-06
          • 1970-01-01
          相关资源
          最近更新 更多