HTTP协议
HTTP简介
HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵循这个规则。
目的:提供一种发布和接收HTML页面的方法。(用于客户端与服务器之间的通信)
HTTP通信过程
1.客户端向服务器发起请求
2.服务器响应请求,并发回客户端响应数据。
URI 和URL
URI : 在电脑术语中,统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。
**URL:**URL是Uniform Resource Locator的缩写,译为"统一资源定位符"。URL是一种URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。
请求和响应报文格式
HTTP报文:
用于HTTP协议交互的信息。是由多行(CR+LF做换行符)数据构成的字符串文本。
报文结构:
报文首部+空行(CR,回车+LF,换行符)+报文主体
请求报文:
内容:方法、URI、协议版本,请求首部字段、内容实体
响应报文:
内容:
1.状态码:表示请求成功与否。
HTTP常见状态码:
2.HTTP首部字段:
首部字段名 : 字段值
类型:
- 通用首部字段(请求和响应两方均使用)
Cache-Control:可操作缓存机制
Connection:控制不再转发给代理的首部字段管理持久连接
Data:创建HTTP报文的时间和日期
Via: 为了追踪请求报文和响应报文的传输路径。报文经过代理or网关时,会首先在首部字段Via中附加该服务器的信息,然后再进行转发。就相当于给报文一个标记,告诉其他的代理or网关,这个东西来过我这。也就避免了请求回环的发生。 - 请求首部字段(请求报文使用,补充请求的附加内容、客户端信息、响应内容的优先级等信息)
Accept:告诉服务器or代理能够处理的媒体类型的及媒体类型(就时文件的形式)的优先级(及当服务器提供多种媒体类型时,会首先返回权重最大的媒体类型,也就是按照优先级从高到低)。
type/subtype
文本文件:
text/html(浏览器在获取到这种文件时会自 动调用html的解析器对文件进行相应的处理)
text/css
text/plain(意思是将文件设置为纯文本的形式,浏览器在获取到这种文件时并不会对其进行处理)
图片文件:
image/jpeg
image/gif
image/png
二进制文件:
application/octet-stream
application/zip
Accept-Language: 告诉服务器or代理能够处理的自然语言集(中文or英文or…),以及自然语言集的优先级。
Authorization: 告诉服务器,用户代理的认证信息。(想要通过服务器认证的代理,会在接受到401返回的状态码之后,将Authorization加入到请求字段中)
example:
Authorization :Basic *********
Host:告诉服务器,请求的资源所处的互联网主机名和端口号。
Referer: 告诉服务器请求的原始资源的URI.
example:
Referer : http://www/example.com/index.php
User-Agent:将创建请求的浏览器和用户代理名称等信息传达给服务器。 - 响应首部字段(响应报文使用,补充了响应的附加内容)
Location: 将响应接受方引导至某个与请求URI位置不同的资源。
Server:告诉当前服务器上安装的HTTP服务应用程序的信息。 - 实体首部字段(请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间与实体有关的信息)
**Allow:**告诉客户端,它需要支持的HTTP方法,服务器会把所有能支持的HTTP方法写入首部字段Allow返回。当服务器接收到不支持的HTTP方法时,会以状态码405 Method Not Allowed作为响应返回。
Content-Length:实体主体部分的大小(字节)
Content-Type:实体主体内对象的媒体类型, type / subtype
example: Content-Type: text/html ; charest = UTF-8
Method:GET请求被过滤器orWAF拦截,可转换成POST请求绕过检测。
声明:文中内容为学习HTML的笔记,学习视频为:
B站HTTP学习视频
截图,文本均出自其中。部分概念是自己Google的。