美文网首页
HTTP初始行

HTTP初始行

作者: 温岭夹糕 | 来源:发表于2020-01-04 20:17 被阅读0次

ABNF范式:https://www.jianshu.com/p/fe82f22f09f6

回顾一下根据ABNF范式对HTTP初始行的描述

start-line = request-line / status-line


请求头

request-line = method SP request-target SP HTTP-version CRLF

如 GET  /  HTTP/1.1

其中request-target在CRF中的描述为

request-target = origin-form / absolute / authority-form / asterisk-form

origin-form

origin-form = absolute-path[ "?" query ]

是指我们向源服务器发起请求的路径(未经过正向代理)

其中发起服务时若 absolute-path为空时,必须传值为 /

这个很好理解,我们在远程服务器上部署项目,通过nginx代理,进行路径访问

如 想访问www.xxx.com/a?a=2, /a?a=2就是,并不是跟完整的URI

absolute-form

absolute-form = absolute-URI

即访问正向代理的服务时,需要携带完整的URI (更多为了防止低版本的代理服务器传递时信息丢失)

如想访问 www.xxx.com/a?a=2, www.xxx.com/a?a=2整个就是

authority-form

authority-form = authority

仅用于CONNECT方法,即VPN、隧道,需要携带域名和端口和版本号

如CONNECT www.xxx.com:80 HTTP/1.1

asterisk-form

asterisk-form = “*”

仅用于OPTIONS方法,OPTIONS请求一般会在发送跨域请求前进行,用于测试支持哪些方法的跨域请求

用curl模仿OPTIONS请求

响应头

statusline = HTTP-version SP status-code SP reasonphrase CRLF

status-code 为响应码

响应码分类

1xx :   请求已接受到需要进行进一步处理

2xx : 成功处理请求

3xx:重定向

4xx:客户端错误

5xx:服务端错误

补充:请求方法中的安全与幂是什么

在 HTTP 协议里,所谓的“安全”是指请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造成实质的修改。按照这个定义,只有 GET 和 HEAD 方法是“安全”的,因为它们是“只读”操作,只要服务器不故意曲解请求方法的处理方式,无论 GET 和 HEAD 操作多少次,服务器上的数据都是“安全的”。而 POST/PUT/DELETE 操作会修改服务器上的资源,增加或删除数据,所以是“不安全”的。

所谓的“幂等”实际上是一个数学用语,被借用到了 HTTP 协议里,意思是多次执行相同的操作,结果也都是相同的,即多次“幂”后结果“相等”。

很显然,GET 和 HEAD 既是安全的也是幂等的,DELETE 可以多次删除同一个资源,效果都是“资源不存在”,所以也是幂等的。

相关文章

  • HTTP初始行

    ABNF范式:https://www.jianshu.com/p/fe82f22f09f6 回顾一下根据ABNF范...

  • HTTP全知道(上)

    你所需要了解的关于http的一切 HTTP 报文结构 起始行 + 头部 + 空行 + 实体 起始行请求报文格式是方...

  • flask学习笔记(一):回顾HTTP通信

    参考博客 HTTP 请求报文 响应报文 一、HTTP请求报文 1. 起始行 2. 请求头 headers 2.1....

  • HTTP初入门

    一、什么是HTTP HTTP(HyperText Transfer Protocol),即超文本传输协议。HTTP...

  • 初窥HTTP

    要知道HTTP肯定要先知道WWW,下面我用思维导图来介绍下: 1,弄懂了上图的关系,接下来着重介绍HTTP。 先介...

  • HTTP初解

    写在前面:新手刚接触http,有很多东西记不住只得用这种方式帮助记忆。 1 HTTP介绍 HTTP协议(Hyper...

  • 初涉HTTP

    什么是HTTP http是计算机通过网络进行通信的规则 使客户端(浏览器)能从web服务器请求信息和服务 是一种无...

  • HTTP权威指南 【学习笔记】

    HTTP报文概述 起始行 start line 首部 header 主体 body URL 语法 URL语法结构 ...

  • HTTP 结构、状态码、首部简记

    HTTP 报文 HTTP报文包括3部分: 起始行 首部字段:名字和值以:区分,每个首部字段以\r\n换行分割。首部...

  • WEB基础--GET&POST的区别

    HTTP请求的起始行以方法作为开始,方法用来告知服务器该请求要做什么事情。 HTTP方法 HTTP规范中定义了一组...

网友评论

      本文标题:HTTP初始行

      本文链接:https://www.haomeiwen.com/subject/yymxactx.html