如何理解在客户端解码HTTP请求?

时间:2017-03-15 23:24:19

标签: c http-headers zlib

我正在使用zLib,我的目标是解码发送到我的服务器的数据。我想了解如何去做这件事。

假设我有一个HTTP请求标题(就在我的脑海中):

Referer: http://google.com\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Accept-Encoding: gzip, deflate\r\n
\r\n
ENCODED_DATA

使用从Accept-Encoding:标题中提取的内容。

假设Ctx = ENCODED_DATA

这是否告诉我,为了检索纯文本Ctx,我需要应用Gzip(Ctx)然后Deflate(Ctx)

基本上,问题是,我如何在客户端解码HTTP请求中的ENCODED_DATA,假设标题显示如上。

1 个答案:

答案 0 :(得分:1)

首先,我不鼓励您编写自己的Web服务器,因为您将引入大量安全漏洞。 特别是,如果您不理解标准。

其次,“Accept-Encoding:gzip,deflate”是客户端在发送响应时告诉服务器 ,它可以是gzip或deflate格式。这与请求的“ENCODED_DATA”部分无关。

除非客户端还发送“Content-Encoding:”标头,否则请求中的数据不会被gzip压缩。 (那个标题会说“gzip”或“deflate”)。根据显示的请求,您的数据可能根本不会被压缩,而是“www-form-urlencoded”。

我要说明,除非你的目标是学习标准(在这种情况下,你应该阅读它们,再加上网络服务器代码),你应该不惜一切代价避免在这一层玩游戏。只需使用为您完成此项工作的数百个Web框架中的一个。