文章目录
- 消息结构
-
- 请求方法
-
- GET
- POST
- HEAD
- PUT
- DELETE
- OPTIONS
- TRACE
- CONNECT
- 请求头
- 响应头
- 状态码
- Content-Type内容类型
消息结构
请求
包含请求行、请求头部、空行与请求数据四部分构成:
例:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
响应
由状态行、消息报头、空行和响应正文构成。
例:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: “34aa387-d-1568eb00”
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
请求方法
HTTP1.0定义:GET、POST、HEAD;
HTTP1.1新增:OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT;
GET
请求指定的页面信息,返回实体主体。
可被缓存、保留在浏览器历史记录中、可添加书签;
只用于取回数据、有长度限制(2048字符)。
查询字符串在GET请求的URL中发送,对所有人可见,因此不应当处理敏感数据。
POST
向指定资源提交数据进行处理请求,比如提交表单与上传文件,可能会导致新资源的建立或已有资源的修改(新建/更新)。
不被缓存、不保留浏览器历史记录、不能添加书签;
没有长度限制。
查询字符串在POST的消息主体中发送,不会显示在URL中,参数不会被保存在浏览器历史或服务器日志中,比GET更安全。
与GET的其他不同:
刷新/后退:GET无影响而POST数据会被重新提交。
编码类型:GET为application/x-www-form-urlencoded,而POST为application/x-www-form-urlencoded 或 multipart/form-data,为二进制数据使用多重编码。
数据类型:GET只允许ASCII字符,POST没有限制、可使用二进制数据。
HEAD
与GET相同,但只返回报头,不返回文档主体。
PUT
向服务器传送的数据取代指定的文档内容,覆盖/更新资源。
PUT是幂等的(对相同输入的结果是相等的),即一个请求执行多次,产生的结果是相等的(而POST不是,因此每次执行相同内容时结果是否一致往往成为使用POST或PUT的区别)
DELETE
删除指定资源。
OPTIONS
返回服务器支持的HTTP方法。
TRACE
追踪路径。
CONNECT
把请求连接转换到透明的TCP/IP通信。
请求头
POST请求的Content-Length必须出现。
- Accept/Accept-Charset/Accept-Encoding/Accept-Language:浏览器可接受的MIME类型/可接受的字符集/可解码的数据编码方式(支持gzip时减少5~10倍下载时间)/希望的语言种类。
- Authorization:授权信息,通常应对服务器的WWW-Authenticate头。
- Connection:是否需要持久连接,“Keep-Alive”值持久连接(HTTP1.1默认持久连接)。
- Content-Length:消息正文的长度。
- Cookie:保存状态,通常用于用户身份信息,客户端首次请求时,服务器返回Set-Cookie,客户端保存Cookie并在下次请求时自动带Cookie使服务器得知客户端状态信息。
- From:请求发送者的Email地址。
- Host:初始URL中的主机和端口。
- If-Mdified-Since:当请求在指定日期后经过修改才返回,否则服务器应当返回304:Not Modified。
- Pragma:指定“No-Cache”值表示服务器必须返回刷新后的文档,即使代理服务器已有本地拷贝。
- Referer:包含URL,用户从该URL的页面出发访问当前请求页面。
- User-Agent:浏览器类型。
- UA-Pixels(-/Color/OS/CPU):某些版本的IE发的非标准请求,代表屏幕大小/颜色深度/操作系统/CPU类型。
响应头
表示文档位置已改变时应当返回Location头;401:Unauthorized必须伴随WWW-Authenticate头。
- Allow:服务器支持哪些请求方法。
- Content-Encoding/Content-Length/Content-Type:文档编码方法/内容长度/文档MIME类型。
- Date:当前GMT时间。
- Expires:文档缓存过期时间。
- Last-Modified:文档最后修改时间。
- Location:文档位置。
- Refresh:浏览器应当在多长时间后刷新文档,以秒计。
- Server:服务器名,一般自动设置。
- Set-Cookie:设置Cookie。
- WWW-Authenticate:指定客户端应当在Authorization头中提供的授权信息。
状态码
https://blog.csdn.net/fruiva/article/details/107703419
Content-Type内容类型
用于定义网络文件的类型与网页的编码,决定浏览器读取文件的格式、编码,告诉客户端返回内容的内容类型。
常见格式:
Content-Type: text/html; charset=utf-8
常见媒体格式类型:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
- application/xhtml+xml :XHTML格式
- application/xml: XML数据格式
- application/json: JSON数据格式
- application/pdf:pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : < form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
- multipart/form-data : 表单中的文件上传