1、HTTP请求报文的组成结构?
HTTP 请求报文由3部分组成(请求行+请求头+请求体)
1、请求方法:例如最常用的GET和POST
2、请求的URL地址
3、HTTP协议名称和版本号
4、报文头:若干键值对形式的参数, 将客户端的相关信息传递给服务端
5、报文体:发送给服务端的数据
2、常见HTTP请求头属性
Accept: 设置接受的内容类型,指浏览器或其他客户端可以接受的MIME文件类型,服务器可以根据它判断并返回适当的文件格式
Accept: */*? ? ? ? ? ?//浏览器支持接收任何格式
Accept: image/gif ???????//浏览器支持接收GIF图像格式的资源
Accept: text/plain? ? ? ? //浏览器支持接收普通文本?.txt的资源
Accept: text/html ???????//浏览器支持接收html文本资源
例:Accept: text/plain
Accept-Charset :设置接受的字符编码
例:Accept-Charset: utf-8?
Accept-Encoding:设置支持的内容编码及内容编码的优先级顺序,可一次指定多种内容编码
这里的编码和字符编码不同,将正常文件进行压缩就是一种利用文件底层编码进行的再编码,浏览器数据发送的时候会将数据先根据请求数据中的Accept-Charset进行编码,然后通过Accept-Encoding中可以接受的压缩算法进行压缩,这会有效减小网络压力
gzip:由文件压缩程序 gzip生成的编码格式
compress: 由 UNIX 文件压缩程序 compress 生成的编码格式
deflate:组合使用 zlib 格式及由 deflate 压缩算法生成的编码格式
例:?Accept-Encoding: gzip, deflate
Accept-Language: 设置接受的语言
Accept-Language: en-US?
Accept-Language: zh-cn,zh;q=0.5 (浏览器支持的语言分别是简体中文和中文,优先支持简体中文,zh-cn表示简体中文;zh 表示中文)
q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型
Connection :设置当前的事务完成后,是否会关闭网络连接
HTTP是无状态协议,但从HTTP/1.1起,浏览器默认都开启了Keep-Alive,保持长连接特性,比如打开一个网页后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的TCP连接。
但是Keep-Alive不会永久保持连接,可以在不同的服务器软件中设定保持时间
例:Connection: keep-alive?网络连接是持久的,不会关闭,可在该连接继续发送请求
Content-Length:设置请求体的字节长度,用十进制数字表示的八位字节的数字
例:Content-Length: 657
Content-Type:设置请求体的MIME类型,接口发送参数、接收响应数据,都需要双方约定好使用什么格式的数据,例如 json、html,只有双方按照约定好的格式去解析数据才能正确的收发数据
Content-Type格式:
Content-Type:type/subtype ;parameter
type:主类型,任意的字符串,如text,如果是*号代表所有; subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开; parameter:可选参数,如charset
常见格式:
application/json:JSON格式数据
application/x-www-form-urlencoded :post请求中默认的格式
multipart/form-data:上传文件时需要用到的格式
image/png:png图片格式
text/plain:纯文本格式
text/html:HTML格式
application/xml:XML数据格式
示例:
Content-Type: application/json;charset:utf-8;
Content-Type: application/x-www-form-urlencoded;charset:utf-8;
referer: 包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的,也称为HTTP来源地址(HTTP Referer),可以检查访客从哪里来,通过这个信息,我们可以知道访客是怎么来到当前页面的,常被用来对付伪造的跨网站请求
例:referer:https://www.jianshu.com/
Cookie?设置服务器使用Set-Cookie发送的http cookie?
例:cookie:uuid_tt_dd=10_4605394780-1566180485366-784624; Hm_lvt_e5ef47b9f471504959267fd614d579cd=1637564807; __gads=ID=9dd23a2282c17ee5-...
|