HTTP版本
- HTTP/0.9
- HTTP/1.0
- HTTP/1.0+
- HTTP/1.1
- HTTP/NG(又名HTTP/2.0)
URI/URL/URN
URI表示资源标识符,它包括URL和URN。
URL通过资源的位置来标识资源。
URN通过资源的名字来标识资源,与资源所在位置无关。
URL语法(适用大多数协议)
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
path中的每一段都可以有一个params,params表示为名值对,用=分割。
query由?和多个名值对组成,名和值之间用=分割,名值对之间用&分割。
frag由浏览器处理。
另外URL有最大长度的限制。
URL的某些必须先进行编码,而且必须对参数和值分别编码,然后连接起来。
在Java中,可使用URLEncoder编码。
解码时,不需要分别解码,在Java中,可使用URLDecoder解码。
HTTP报文结构
- 起始行
- 首部字段,首都以一个空行结束
- 主体
请求报文
<\method> <\request-URL> <\version>
<\headers>
<\entity-body>
响应报文
<\version> <\status> <\reason-phrase>
<\headers>
<\entity-body>
方法
- GET
- HEAD:返回的内容不包括实体部分
- POST
- PUT:向服务器写入文档。把实体的内容写入所请求的URL命名的文档
- TRACE:服务器在实体部分携带它收到的请求报文,因为一些中间结点可能会修改请求报文。
- OPTIONS:请求服务器告知其支持的各种功能
- DELETE:请求服务器删除请求URL所指定的资源
响应码
- 100-199 信息性状态码
- 200-299 成功状态码
- 300-399 重定向状态码
- 400-499 客户端错误状态码
- 500-599 服务器错误状态码
首部
首部格式为:名字:(可选的空格)值CRLF
每个首部可以分为多行,新行前至少有一个空格或制表符