再谈Http协议中消息的编码

本文详细介绍了HTTP请求报文的结构,包括start line、headers和body,并重点讲解了URL编码规则,包括对非ASCII字符的URLEncode处理,以及在编程中如何正确进行URL编码。
摘要由CSDN通过智能技术生成

以前大概知道URLencoded, application/x-www-form-urlencoded等大概的东西,也做了一些能运行的程序,可总归不是特别清楚。今天又看到了HTTP: The Definitive Guide这本电子书,终于彻底明白了怎么回事。

 

首先还是回顾一下HTTP协议的报文,Http协议报文有两种,一是请求报文,二是响应报文,而这两种报文格式和编码规则是一样的,所以这里以请求报文为例。

 

请求报文(消息),由三个部分组成,从前到后分别是:

(1)start line

(2)headers

(3)body

 

好了,首先要明确的是(1)和(2)必须是ASCII码字符,也就是说出现在(1)和(2)里的字符编码必须为0-127之内。(3)中的内容可以是任何编码,可以是字符编码,也可以是图像的编码,也可以是任意二进制编码。至于到底里面是什么,通过(2)中的  Content-Type:头来说明。

 

总体格式是这样的,(1)startline必须以CRLF结尾,CR,LF当然也是ASCII码了。(2)headers也必须以CRLF结尾。需要注意的是,即使一个头也没有,仍需要一个CRLF表示头的结束。

 

具体来说:

一、对于startline

 

method request-URL version CRLF,其中method为方法名,如GET,POST等,后跟空格,后跟请求的URL,后跟空格,后跟版本号,后跟CRLF。

这里需要注意的是URL的编码,前面已经讲过了,首先startline里的内容必须为ASCII码,而对于startline里面的URL则更为苛刻,URL的格式为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值