概述
第十三天:ABNF-请求头-响应头
启动hello工程,打开抓包工具,监听8080端口,查看抓包数据
可以看到他的整个数据
我们打开请求报文,可以看到相关数据,但是这样的数据是不严谨的,怎样才是严谨的?
ABNF
ABNF (Augmented BNF)
是BNF (Backus-Naur Form,译为:巴科斯瑙尔范式)的修改、增强版
在RFC 5234中表明: ABNF用作internet中通信协议的定义语言
ABNF是最严谨的HTTP报文格式描述形式,脱离ABNF谈论HTTP报文格式,往往都是片面、不严谨的
HTTP的报文(请求报文和响应报文)应该长成这个样子
这就是使用ABNF描述的报文格式
标注的就是header-field
一个header-field要加一个CRLF(这就是回车换行)
当我们走到最后一对header-field,还需要额外加一个CRLF
数据在请求体里面
所以说报文用不用换行,会不会换行,完全取决于ABNF有没有CRLF,但是奇怪的一点就是ABNF的strat-line后面没有CRLF,但是它还是换行了,这是为什么?
因为start-line里面本身就存在一个换行
我们看看它的格式
我们很明显就能看到后面存在CRLF
我们再来看看herder-field、message-body的格式
herder-field不包括CRLF
message-body
OCTET是一个八位的字符串,所以说就是字符串格式的都行
ULR的编码
URL中一旦出现了- -些特殊字符(比如中文、空格),需要进行编码
在浏览器地址栏输入URL时,是采用UTF-8进行编码
与实际的URL编码是一致的
Xshell的好处
安装- -个Xshell (安全终端模拟软件) ,在Xshell中使用telnet
可以直接面向HTTP报文与服务器交互
可以更清晰、直观地看到请求报文、响应报文的内容
可以检验请求报文格式的正确与否
第一步
然后直接填写请求体
发现出现错误
当我们填写更改数据后,发现数据出来了
相关的的请求方法
RFC 7231,section 4: Request methods:描述了8种请求方法
GET、HEAD、POST、PUT、DELETE、 CONNECT、 OPTIONS、 TRACE
GET:常用于读取的操作,请求参数直接拼接在URL的后面(浏览器对URL是有长度限制的)
POST:常用于添加、修改、删除的操作,请求参数可以放到请求体中(没有大小限制)
- post可以用URL传参,也可以用请求体传递参数
HEAD:请求得到与GET请求相同的响应,但没有响应体
-
相当于发了一个GET请求,但是没有响应题
-
使用场景举例:在下载一 个大文件前,先获取其大小,再决定是否要下载。以此可以节约带宽资源
OPTIONS:用于获取目的资源所支持的通信选项,比如服务器支持的请求方法
看看服务器能支持哪些请求方法
不常用
PUT:用于对已存在的资源进行整体覆盖
PATCH:用于对资源进行部分修改(资源不存在,会创建新的资源)
DELETE:用于删除指定的资源
TRACE:请求服务器回显其收到的请求信息,主要用于HTTP请求的测试或诊断
CONNECT:可以开启- -个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道(tunnel)
- 可以用来访问采用了SSL (HTTPS)协议的站点
头部字段
头部字段可以分为4种类型
请求头字段(Request Header Fields)
客服端发给服务器的
-
有关要获取的资源或客户端本身信息的消息头
referer:告诉服务器这个连接从那个网页来的,往常是为了做防盗链,当URL请求不是通过我指定的网页来的,我就拒绝你的连接。
Accept:告诉服务器我只接收哪些数据
Accept复杂情况
这里的q是什么意思,这里代表的是权重值,值越大,优先级越高
range:代表我只想拿你部分数据,一般来说我下载一个服务器要一个完整的数据才有意义,那么这个有什么意义呢
可以用在多线程断点下载
假设这是我的数据,分成了四部分,我们通过四部分分段点的下载,会提高下载的速度
响应头字段(Response Header Fields)
-
有关响应的补充信息,比如服务器本身(名称和版本等)的消息头
可以通过服务器设置header
Content-Disposition:一个可以让客户端下载文件并建议文件名的头部
实体头字段(Entity Header Fields)
-
有关实体主体的更多信息,比如主体长度(Content-Length) 或其MIME类型
通用头字段(General Header Fields)
-
同时适用于请求和响应消息,但与消息主体无关的消息头
最后
以上就是顺利日记本为你收集整理的第十三天:ABNF-请求头-响应头的全部内容,希望文章能够帮你解决第十三天:ABNF-请求头-响应头所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复