目录
一,什么是http协议
http是网络七层模型中应用层的协议。http协议实际上就是一个应用接口,我们可以通过浏览器或者各种编程语言的网络库来调用这些接口,然后控制网卡发送或者接收数据,数据通过网线(光纤)被各种网络设备不断转发,辗转到达目标地址。
http协议多用于浏览器与服务器之间的数据请求和接收过程。比如请求各种html文本文件,js文本文件,css文本文件,图片、视频、音乐等。
Ajax也是利用了http协议,但是他是一个单独的组件,协助浏览器完成网页的更新,他是用xmlrequest这种特殊形式的http协议实现。
另外的操作还有向服务器提交表单数据,超链接跳转等都用到了http协议。
二,http常见的请求端和接收端
常见的请求端就是浏览器,还有爬虫时使用的request、openurl等请求方法或者Telnet命令。
常见的接收端就是各种服务器框架或者软件,比如Nginx,Apache,iis等,他们不停地监听来自各个地方的对自己的请求。
三,浏览器与服务器之间建立联系的过程
第一步:浏览器向服务器IP地址发送请求,服务器监听之后得到该请求。
第二步:服务器根据请求的要求回发指定数据到浏览器端。
第三步:断开链接。
这是大致的过程,期间如何建立链接,如何加密,如何握手不需要管。
四,http请求方法参数解读
1,请求行
请求行又分3部分:请求方法--请求路径url--所用的协议。
请求方法:GET,POST,PUT,DELETE,TRACE,OPTIONS。最常见的连接命令是get和post:GET:请求指定的页面信息,并返回实体主体。POST:向指定资源提交数据进行处理请求(如提交表单或者上传文件),数据被包含在请求体中。
head请求:HEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分,用于测试url所指的资源是否存在。
2,请求头信息
请求头有很多的参数,每个参数都具有特定的含义。常见的有:host表主机名。connection表示链接类型。User-Agent表示浏览器的版本信息。Accept表示传输文件类型。Content-Type:POST 请求里用来表示的内容类型 。举例:Content-Type = Text/XML; charset=gb2312
更加详细的参数解读在这个地方:请求头参数详解。
Host: www.baidu.com
Connection: keep-alive
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
3,请求主体信息
一般使用post请求方式才有主体信息。主体信息就是发送给服务器的内容,比如在网页输入的密码,百度时输入的关键词,表单信息等。
五,http响应报文参数解读
1,响应行
2,响应头
Accept-Ranges定义请求返回的单位,有none和bytes。Cache-Control表示通过某个指定指令来实现缓存机制,被用于在http请求和响应中。Connection表示客户端与服务连接类型,Keep-Alive表示持久连接。Location告诉浏览器要跳转到哪里。Content-Encoding浏览器支持的压缩编码是 gzip。Content-Length使用十进制的数字表示了消息的长度, 服务端告知浏览器要接受的数据长度。set-cookie将某些数据(值)设为cookie,作为cookie缓存后,在浏览器的cookie中就能看到这个数据。Content-Type告诉客户端实际返回的内容的内容类型。Date表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date: Mon, 04 Jul 2011 05:53:36 GMT。
更多参数解释在这里。响应头含义解释_Anita__li的博客-CSDN博客_响应头。
3,响应主体信息
一般就是服务器回发的html文本文件。
4,响应状态码
1xx:100-101 信息提示
2xx:200-206 成功
3xx:300-307 重定向
4xx:400-415 错误类信息,客户端错误
5xx:500-505 错误类信息,服务器端错误
200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现 在所处的新位置;Moved Permanently
302: 响应报文Location指明资源临时新位置 Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态 码通知客户端;Not Modified
307: 浏览器内部重定向
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503: 服务不可用,临时服务器维护或过载,服务器无法处理请求
504: 网关超时
————————————————
原文链接:https://blog.csdn.net/LC181119/article/details/122889106
六,get和post方法的区别
get和post在底层实现都是一样的,主要区别在信息是否向外界展现。
1,get方法详解
get将表单中数据按照name=value的形式,添加到action 所指向的URL 后面,并且两者使用”?”连接,而各个变量之间使用”&”连接;post是将表单中的数据放在HTTP协议的请求头或消息体中,传递到action所指向URL。
上面的请求方式就是get方法,搜索的关键字post和get的区别会直接显示在网址框,这是不安全的。
2,post方法详解
本质和get方法一样,但是他的提交信息不向外展示。
3,get个post的区别一览
七,referer表头与防盗链
referer是一个请求头参数,说明你进入这个网页是从什么主机域名而来。比如:通过百度搜索进入某个网页,那么这个网页的站点服务器就会知道你是从百度搜索过来的。
利用这个referer请求头信息,可以使用条件判断截胡某些ip对站点资源的访问。
更多请求头参数说明在这里。Referer请求头_GD_vigoss的博客-CSDN博客_referer请求头。