http协议(二):http协议--request

本文详细介绍了HTTP协议中的请求结构,包括请求头和请求体,以及各种请求方式,如GET、POST等。重点讲解了请求头的解析和常见的请求首部,同时阐述了请求体在POST请求中的作用,特别是content-type的选择。还对比了GET和POST请求的区别,GET将数据放在URL中,而POST则将数据放在请求体中,POST请求常用于提交数据并可能创建或更新资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.请求结构

请求包含:请求头和请求体

一般post请求中包好请求体

2. 请求方式

http1.0定义了三种请求方法:get、post、head方法

http1.1新增了五种请求方法:options、put、delete、trace和connect方法。

序号

方法

描述

1

get

请求指定的页面信息,并返回实体主体

2

post

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。post请求可能会导致新的资源的建立或资源的修改;一般不会被删除。

3

head

类似于get请求,只不过返回的相应内容没有具体的内容,用于获取报头。这一方法可以在不必传输整个响应内容的情况下,就可以获取版旱灾响应消息头中的信息。

4

put

从客户端向服务器传送的数据取代指定的文档的内容。向指定资源位置上传最新内容;

5

delete

请求服务器删除指定页面

6

connect

http1.1协议中预留给能够将连接改为管道方式的代理服务器

7

options

允许客户端查看服务器的性能。返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送’*‘的请求来测试服务器的功能性;

8

trace

回显服务器收到的请求,主用于测试或诊断;

3.请求头

(1)解析

例:fiddle抓包下图

第一行为请求行

请求行中 第一部分为请求方法(下图为get方法)

第二部分为请求地址即URL

第三部分为http版本

其他部分为request-head请求首部

 

(2)首部常用部分:

参考:https://www.jianshu.com/p/18d7b0c08393

head

解释

示例

host

用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。从http1.1开始请求中必须包含此内容;

host:www.fiddler2.com

Accept

请求对象类型,用于指定客户端可以接收哪些类型的信息;

Accept:text/plain,text/html

Accept-Encoding

指定浏览器可以支持的web服务器返回内容压缩编码类型

Accept-Encoding:compress,gzip

Accept-Language

指定浏览器可接受的语言

Accept-Language:en,zh

connection

表示是否需要持久连接

connection:close

Cookie

http请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器;cookie是网站为了辨别用户进行session跟踪而存储在用户本地的数据。

cookie:$Version=1;skin=new;

Content-Type

互联网媒体类型,也叫做MIME类型。使用它来表示具体请求中的媒体类型

Content-Type:application/x-www-form-urlencoded【表示表单数据】;

text/html【表示HTML格式】;

image/gif【表示GIF图片】;

application/json【表示json类型】;

Referer

此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计

Referer:http://www.zcmhi.com/archives/71.html

User-Agent

User-Agent的内容包含发出请求的客户端使用的操作系统、浏览器、及版本等信息;

User-Agent:Mozilla/5.0(Linux;x11)

Accept-Charset

浏览器可以接受的字符编码集

Accept-Charset:iso-8859-5

Accept-Ranges

可以请求网页实体的一个或者多个子范围字段

Accept-Ranges:bytes

Authorization

http授权的授权证书

Authorization:Basic AWxhZGRpbjpvcGVuIHNlc2FtZQ==

cache-Control

指定请求和响应遵循的缓存机制

cache-Control:no-cache

content-Length

请求的内容长度

content-Length:348

Date

请求发送的日期和时间

Date:Tue,15 nov 2010 08:12:31GMT

Expect

请求的特定的服务器行为

Expect:100-continue

From

发出请求的服务器的域名和端口号

host:www.zcmhi.com

if-Match

只有请求内容与实体相匹配才有效

if-Match:“737060cd8c284d8af7ad3082f209582d”

if-Modified-Since

如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码

if-Modified-Since:sat,29 oct 2010 19:43:31 GMT

if-none-match

如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变

if-none-match:“737060cd8c284d8af7ad3082f209582d”

if-Range

如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag

if-Range:"737060cd8c284d8af7ad3082f209582d

"

if-Unmkdified-Since

只在实体在指定时间之后未被修改才请求成功

if-Unmkdified-Since:sat,29 oct 2010 19:43:31 GMT

max-Forwards

限制信息通过代理和网关传送的时间

max-Forwards:10

pragma

用来包含实现特定的指令

pragma:no-cache

proxy-Authorization

连接到代理的授权证书

proxy-Authorization:Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Range

只请求实体的一部分,指定范围

Range :byte=500-999

TE

客户端愿意接受的传输编码,并通知服务器接受尾加头信息

TE:trailers,deflate;q=0.5

Upgrade

向服务器指定某种传输协议以便服务器进行转换(如果支持)

Upgrade:Http/2.0,SHTTP/1.3,IRC/

Via

通知中间网关或代理服务器地址,通信协议

Vis:1.1 fred,1.1 nowhere.com(Apache/1.1)

Warning

关于消息实体的警告信息

warn:199 Miscellaneous warning

   

 

4.请求体

(1)一般用于post请求中,主要定义向服务器提交的数据类型,而对于Get请求Request body则为空。比如:在登录时我们填写的用户名和密码信息,提交时这些信息就会以data的形式提交给服务器。

(2)常用的content-type与post提交数据方式的关系

Content-type

提交数据方式

application/x-www-form-urlencoded

form表单提交

multipart/form-data

表单文件上传提交

application/json

序列化json数据提交

text/xml

xml数据提交

PS:application/x-www-form-urlencoded 与 multipart/form-data的区别

  • 在没有type-file的时候,用默认的application/x-www-form-urlencoded就行
  • 在有type-file的时候,要用multipart/form-data编码方式。浏览器会把表单以控件为单位分隔,并且为每个部分加上content-pispostion(form-data或file)/content-type(默认text/plain)、name(控件name)信息,并加上分隔符(boundary)

5. get请求与post请求的区别

(1)get请求内容在URL里面,post请求内容在请求体中;

(2)get请求向特定的资源发送请求;

(3)post请求向指定资源提交数据进行处理请求(例如提交表单);

(4)post请求可能会导致新的资源的建立或已有资源的修改;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值