我正在使用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
,假设标题显示如上。
答案 0 :(得分:1)
首先,我不鼓励您编写自己的Web服务器,因为您将引入大量安全漏洞。 特别是,如果您不理解标准。
其次,“Accept-Encoding:gzip,deflate”是客户端在发送响应时告诉服务器 ,它可以是gzip或deflate格式。这与请求的“ENCODED_DATA”部分无关。
除非客户端还发送“Content-Encoding:”标头,否则请求中的数据不会被gzip压缩。 (那个标题会说“gzip”或“deflate”)。根据显示的请求,您的数据可能根本不会被压缩,而是“www-form-urlencoded”。
我要说明,除非你的目标是学习标准(在这种情况下,你应该阅读它们,再加上网络服务器代码),你应该不惜一切代价避免在这一层玩游戏。只需使用为您完成此项工作的数百个Web框架中的一个。