我们怎么能欺骗HTTP协议?

时间:2009-09-19 17:53:40

标签: http header protocols

虽然HTTP无处不在,但它带有Headers的包袱,在我看来它变得更加严重。 我要传输的数据是HTTP标头大小的iota。

  • 我可以使用其他协议吗? 使用仍然是理解的 浏览器和其他网络并没有附带 行李的HTTP?
  • 跳过标题并将其添加到目的地的任何其他方式,因此只有极少数数据通过网络传输?

3 个答案:

答案 0 :(得分:7)

  1. 没有
  2. 没有
  3. 许多HTTP标头是可选的。典型的浏览器请求比最小请求大得多,这可能看起来像:

    GET /doc HTTP/1.1
    Host: example.com
    Connection: close
    

    (我可以放心地说这种形式的请求是有效的,因为我在通过telnet example.com 80测试Web服务器响应时一直使用它们。)

    可能只需省略一些标题即可获得有用的结果。

答案 1 :(得分:5)

HTTP请求可能非常小。正如混乱在他的回答中指出的那样,你并不需要发送带有请求的许多标题。唯一的标题是Host。我可以通过使用HTTP 1.0来简化混乱的例子,它不具有持久连接。

GET / HTTP/1.0
Host: example.com
                                       (blank line is necessary)

回复可以同样简单

HTTP/1.0 200 OK
Content-Type: text/html

data content

在这种情况下,HTTP的开销在请求和响应中大约为40个字节。标准TCP数据包为1500字节,因此您在实际数据的响应数据包中有足够的空间。

还有其他HTTP标头,它们确实有价值。您可以包含缓存信息并执行条件GET。您可以使用HTTP / 1.1持久套接字来加快后续请求。如果你不想要,你不必使用任何这些东西,但是关于HTTP的一个好处是有一种标准的方法可以在你需要的时候做更复杂的协议。

至于在JavaME中做最小的HTTP,如果你真的关心每个字节,你最好通过使用普通的TCP socket编写自己的简单HTTP客户端。如果您正在与已知服务器通信,则根本不需要实施太多功能。 (如果您正在与任意服务器通信,则需要更加注意错误处理,重定向等)。

答案 2 :(得分:2)

WebSockets即将推出HTML5,应该符合您的需求。可以重新协商标准HTTP连接以将协议更改为websockets。但我怀疑规格可能有点年轻,但它可能符合要求。