http资料整理
了解web及网络基础
1.7 URI和URL
- URI:Uniform Resource Identifier,同一资源标识符,表示某一互联网资源
- URL:表示资源的地点,URL是URI的子集
URI格式:
http://user:pass@www.example.com:80/index.php/home/index/index.html?uid=1#ch1
- http:协议
- user:pass:登录信息(认证)
- www.example.com:服务器地址,在CDN处转换成ip形式
- 80:服务器端口号
- index.php/index/index.html:带层次的文件路径,不一定是真实的文件路径
- ?uid=1:传递参数
- #ch1:网页的锚点
简单HTTP协议
2.5 告知服务器意图的HTTP方法
- GET
- POST
- PUT:用来传输文件,但是由于本身不对文件进行验证,需要人为编写程序进行验证,所以用情况比较少
- HEAD:与GET一样,只是不需要服务器返回报文主体
- DELETE
- OPTIONS:询问服务器支持的HTTP方法
- TRACE:追踪经过的代理服务器,一般服务器不开放该方法
- CONNECT:要求用隧道协议(SSL和TLS)连接代理
HTTP报文内的HTTP信息
3.2 请求报文及响应报文的结构
请求报文
- 报文首部
- 空行(CR+LF)
- 报文主体
响应报文
- 报文首部
- 空行(CR+LF)
- 报文主体
请求报文首部
- 请求行
- 请求首部字段
- 通用首部字段
- 实体首部字段
- 其他
响应报文首部
- 状态行
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
表1 通用首部字段
首部字段名 | 说明 |
---|---|
Cache-Control | |
Connection | |
Date | |
Pragma | 报文指令 |
Tailer | 报文末端的首部一览 |
Transfer-Encoding | 指定报文主体的传输编码方式 |
Upgrade | 升级为其他协议 |
Via | 代理服务器的相关信息 |
Warning |
表2 请求首部字段
首部字段名 | 说明 |
---|---|
Accept | 用户代理可以处理的媒体类型 |
Accept-Charset | |
Accept-Encoding | |
Accept-Language | |
Authorization | Web认证信息 |
Expect | 期待服务器的特定行为 |
From | 用户的电子邮箱地址 |
Host | 请求资源所在的服务器 |
If-Match | 比较实体标记(ETag) |
If-Modified-Since | 比较资源的更新时间 |
If-None-Match | 比较实体标记 |
If-Range | 资源未更新时发送实体Byte的范围请求 |
If-Unmodified-Since | 比较资源的更新时间 |
Max-Forwards | 最大经过的代理服务器数量 |
Proxy-Authorization | 代理服务器要求客户端的认证信息 |
Range | 实体的字节范围请求 |
Referer | 对请求中URI的原始获取方,就是该请求发往的目的地 |
TE | 传输编码的优先级 |
User-Agent | HTTP客户端程序的信息 |
表3 响应首部字段
首部字段名 | 说明 |
---|---|
Accept-Ranges | 是否接受字节范围请求 |
Age | 推算资源创建经过的时间,就是资源的存在时间 |
ETag | 资源的匹配信息 |
Location | 令客户端重定向至指定URI |
Proxy-Authenticate | 代理服务器对客户端的认证信息 |
Retry-After | 对再次发起请求的时机要求 |
Server | HTTP服务器的安装信息 |
Vary | 代理服务器缓存的管理信息 |
WWW-Authenticate | 服务器对客户端的认证信息 |
表4 实体首部字段
|首部字段名|说明|
|Allow|资源可支持的HTTP方法|
|Content-Encoding||
|Content-Language||
|Content-Length||
|Content-Location||
|Content-MD5||
|Content-Range||
|Content-Type||
|Expires||
|Last-Modified||
别的首部信息
- End-to-end首部
分在此类别中的首部会转发给请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。
- Hop-by-hop首部
分在此类别中的首部只对单次转发有效,会因为通过缓存或代理而不再转发。
Hop-by-hop首部列表
- Connection
- keep-Alive
- Proxy-Authenticate
- Proxy-Authenzation
- Trailer
- TE
- Transfer-Encoding
- Upgrade
3.3 编码提升传输速率
3.3.2 压缩传输的内容编码
常用的内容编码有以下几种:
- gzip
- compress(UNIX系统的标准压缩)
- deflate
- identify(不进行编码)
3.4 发送多种数据的多部分对象集合
采用MIME机制,使HTTP的表单能传输多类型实体。
多部分对象集合包含的对象如下:
- multipart/form-data
在web文件表单上传时使用
- multipart/byteranges
使用**boundary=”THIS_STRING_SEPARATES”来进行设置多部分对象集合时进行划分的字符串。
–THIS_STRING_SEPARATES
Content-Type:application/pdf
Content-Range:byte 500-900/8000
–THIS_STRING_SEPARATES
Content-Type:application/pdf
Content-Range:byte 911-1000/8000
–THIS_STRING_SEPARATES–
返回结果的HTTP状态码
类型 | 原因短语 |
---|---|
1xx | Informational |
2xx | Success |
3xx | Redirection |
4xx | Client Error |
5xx | Server Error |
200 OK
204 No Content
206 Partial Content
请求资源的其中一部分。
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
根据URI已经找到资源,但是没有符合搜索条件的资源。
307 Temporary Redirect
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internet Server Error
服务器程序故障。