HTTP协议

HTTP协议

HTTP的一次数据包括:

数据行

头部信息

数据实体

http请求数据头如下(此处是截取的一个HTTPS协议的请求数据,对照着书上的http请求数据来参看的):

GET /favicon.ico HTTP/1.1
请求方法 /URI HTTP/版本号

Host: www.baidu.com
用于指定资源所在的主机号和端口号

Connection: keep-alive

Pragma: no-cache

Cache-Control: no-cache

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.81
用户代理,用于指定浏览器或者其他客户端程序使用的操作系统及版本、浏览器及版本、浏览器渲染引擎、浏览器语言等,以便服务器针对不同类型的浏览器而返回不同的内容。

Accept: image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
指出客户端程序能够处理的MIME(多用途Internet邮件扩展)类型

Sec-Fetch-Site: same-origin
<!--表示一个请求发起者的来源与目标资源来源之间的关系,此处表示同域。
cross-site:跨域请求;
same-origin:发起和目标站点源完全一致;
same-site:
none:如果用户直接触发页面导航,例如在浏览器地址栏中输入地址,点击书签跳转等,就会设置none-->

Sec-Fetch-Mode: no-cors
<!--
该请求头表明了一个请求的模式;
cors:跨域请求;
no-cors:限制请求只能使用请求方法(get/post/put)和请求头(accept/accept-language/content-language/content-type);
same-origin:如果使用此模式向另外一个源发送请求,显而易见,结果会是一个错误。你可以设置该模式以确保请求总是向当前的源发起的;
navigate:表示这是一个浏览器的页面切换请求(request)。 navigate请求仅在浏览器切换页面时创建,该请求应该返回HTML;
websocket:建立websocket连接;
-->
Sec-Fetch-Dest: image
表示请求的目的地,即如何使用获取的数据;请求头指明客户端请求的目的,期望需要什么样的资源。

以上三个属于网络请求的元数据描述,服务端根据这些补充数据进行细粒度的控制响应,换句话说,服务端可以精确判断请求的合法性,杜绝非法请求和攻击,提高web服务的安全性。

Referer: https://www.baidu.com
用于网站的防盗链

Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: BAIDUID=76C37876DE153627D765BE1487F604B4:FG=1; BIDUPSID=76C37876DE1536277151076A037F4C77; PSTM=1611304218; __yjs_duid=1_2305e7639c93ea21a1c0a511e5ca5fab1614586135269; __yjsv5_shitong=1.0_7_4927e0638843a0320ec39773ed147e03bef4_300_1614586224604_139.207.90.31_8e6c6807; BD_HOME=1; H_PS_PSSID=33344_33570_33625_26350_33264; BD_UPN=12314753; delPer=0; BD_CK_SAM=1; PSINO=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; ZD_ENTRY=baidu; ab_sr=1.0.0_ZGY5Njk1ZjE4ODgxMjUzM2I3ZThlNjgxYzhkZjc3YmQ2MTcwMWRjY2JhNjM0OWE1YWJkZjYyY2I2NmFmMzEyNGQ0MTA0ZWYxZmQ3YWFkMTg5ZjY0MDdkNjFlMjQ2NWJh; H_PS_645EC=dbfadf7wqF%2BceYn6QX%2BBfZJNXI1IEZn%2FCPpMnJTYORC2AvrIk8Ga50fkh0c; BA_HECTOR=808g2l0181a4ak2gdg1g3r4kr0r

http响应数据头如下:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Encoding: gzip
Content-Length: 984
Content-Type: image/x-icon
Date: Tue, 02 Mar 2021 01:19:17 GMT
Etag: "423e-55c8139094a40"
Last-Modified: Fri, 27 Oct 2017 06:16:01 GMT
Server: Apache
Vary: Accept-Encoding,User-Agent

HTTP/1.0与HTTP/1.1

HTTP/1.0HTTP/1.1
每一次交互都需要建立TCP连接,每次建立的TCP请求只能完成一个HTTP请求在一个TCP连接上可以完成多个HTTP请求,从而减少了TCP连接的建立次数,提高请求速度。

HTTP/1.1请求方法:

描述方法
GET请求指定的页面信息,并返回实体主体
HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取数据头
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中
PUT从客户端向服务器传送的数据取代指定的文档的内容
DELETE请求服务器删除指定的页面
CONNECTHTTP/1.1协议中预留给能够将链接改为管道方式的代理服务器
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,用于测试或者诊断

常用的两种提交方式:GET与POST

GET请求:

用户在浏览器地址栏直接输入某个URL地址或者单击网页上的一个超链接时,浏览器将使用GET方式发送请求。
网页上的form表单的method属性设置成GET或者不设置method属性(默认时GET),用户提交表单时,会用GET方式提交。
GET请求能传输的数据有限,最多不能超过2KB

POST请求:

method设置成POST时,会以Post形式提交请求
POST请求会把个表单元素作为HTTP消息的实体内容发送给服务器,并不是作为URI地址的参数传递
POST传递数据大小无限制
POST比GET传输更加安全,GET请求参数都是在URL地址中以明文形式显示,而POST传递的参数是在实体内容中,用户是看不到的。

响应状态码

200 OK你最希望看到的,即处理成功!
303 See Other我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。
304 Not Modified告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!
404 Not Found你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。
500 Internal Server Error看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改BUG去吧!

参考文档:

https://blog.csdn.net/fuluadmin/article/details/109292085

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值