HTTP 超文本传输协议

HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一种建立在TCP上的无状态连接的应用层协议。

请求方法

HTTP/1.1协议定义了八种通用的请求方法,来以不同方式操作指定的资源:
HTTP1.0 定义了 GET, POST 和 HEAD 方法;
HTTP1.1 新增了 OPTIONS、PUT、DELETE、TRACE 和 CONNECT 方法;
除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如,RFC 5789 扩展了 PATCH 方法。

方法安全性幂等性描述
GET向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在网络应用程序中。其中一个原因是GET可能会被网络蜘蛛等随意访问。参见安全方法
POST向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
HEAD与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
PUT向指定资源位置上传其最新内容。
DELETE请求服务器删除Request-URI所标识的资源。
TRACE回显服务器收到的请求,主要用于测试或诊断。
OPTIONS这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
PATCH由 RFC 5789 扩展,是对 PUT 方法的补充,用来对已知资源进行局部更新
安全性

对于GET和HEAD方法而言,除了进行获取资源信息外,这些请求不应当再有其他意义。也就是说,这些方法应当被认为是“安全的”。 客户端可能会使用其他“非安全”方法,例如POST,PUT及DELETE,应该以特殊的方式(通常是按钮而不是超链接)告知客户可能的后果(例如一个按钮控制的资金交易),或请求的操作可能是不安全的(例如某个文件将被上传或删除)。

幂等性

假如在不考虑诸如错误或者过期等问题的情况下,若干次请求的副作用与单次请求相同或者根本没有副作用,那么这些请求方法就能够被视作“幂等(idempotence)”的。GET,HEAD,PUT和DELETE方法都有这样的幂等属性,同样由于根据协议,OPTIONS,TRACE都不应有副作用,因此也理所当然也是幂等的。

状态码

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型。

状态码分类描述
1xx消息请求已被服务器接收,继续处理
2xx成功请求已成功被服务器接收、理解、并接受
3xx重定向需要后续操作才能完成这一请求
4xx请求错误请求含有词法错误或者无法被执行
5xx服务器错误服务器在处理某个正确请求时发生错误
常用状态码
状态码描述释意
100Continue继续,客户端应继续其请求
101Switching Protocols切换协议,服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200OK请求成功
201Created已创建,成功请求并创建了新的资源
202Accepted已接受,已经接受请求,但未处理完成
301Moved Permanently永久移动,请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动,与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址,与301类似。使用GET和POST请求查看
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求

消息结构

HTTP的消息格式由请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请求头

HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。

Content-Encoding

https://blog.csdn.net/u014569188/article/details/78912446

Content-Type

https://blog.csdn.net/manbudezhu/article/details/80747244
https://www.cnblogs.com/sunfie/p/8997323.html
https://www.jianshu.com/p/be183553bcfd
https://imququ.com/post/four-ways-to-post-data-in-http.html
http://byteliu.com/2019/03/20/HTTP-POST请求中RequestPayload和FormData的区别?/
https://blog.51cto.com/13570193/2108347
https://cloud.tencent.com/developer/article/1412569

Content-Length
Connection

在HTTP1.0,单一TCP连接内仅执行一个“客户端发送请求—服务器发送应答”周期,之后释放TCP连接。在HTTP1.1优化支持持续活跃连接:客户端连续多次发送请求、接收应答;批量多请求时,同一TCP连接在活跃(Keep-Live)间期内复用,避免重复TCP初始握手活动,减少网络负荷和响应周期。此外支持应答到达前继续发送请求(通常是两个),称为“流线化”(stream)。
在这里插入图片描述

其他请求头
请求头描述

HTTP2.0

https://www.cnblogs.com/heluan/p/8620312.html
https://blog.csdn.net/taiyangdao/article/details/80883189
http://ju.outofmemory.cn/entry/346601
https://www.oschina.net/news/90325/spring-boot-2-0-0-m6-available-now
https://blog.csdn.net/jaune161/article/details/82879044
https://zhuanlan.zhihu.com/p/26559480

参考文献

https://zh.wikipedia.org/wiki/超文本传输协议
https://www.runoob.com/http/http-tutorial.html
https://www.cnblogs.com/chenliyang/p/6558756.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值