HTTP

http介绍

Hypertext Transfer Protocol (HTTP)是一个无状态的应用级协议。无状态意味着可以独立理解每一个请求消息,为了重用代理的连接或者在多个服务器间进行动态负载均衡请求。因此,除非连接是安全的并且特定于该代理,否则服务器不得假定同一连接上的两个请求来自同一用户代理。

尽管HTTP独立于传输协议,但是“ http”方案特定于基于TCP的服务,因为名称委派过程依赖于TCP来建立授权。

消息格式

HTTP-message = start-line
			   *( header-field CRLF )
			   CRLF
		       [ message-body ]

1. start-line

用来区分消息是请求还是相应,即

	start-line     = request-line / status-line

request-line

格式为

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

注:SP代表空格

method(RFC 7231 4.1)有:
在这里插入图片描述
GET

POST
POST方法要求目标资源根据资源自身的特定语义来处理请求中包含的表示形式。

HEAD
与GET相似,除了服务器必须在响应中不发送message body。
此方法可用于获取有关所选表示形式的元数据,而无需传输表示形式数据,通常用于测试超文本链接的有效性,可访问性和最新修改。

status-line

status-line = HTTP-version SP status-code SP reason-phrase CR
reason-phrase

存在reason-phrase的唯一目的是提供与数字状态码关联的文本描述,这主要是出于对交互式文本客户端更频繁使用的早期Internet应用程序协议的尊重。客户应该忽略reason-phrase的内容。

2. header-field

 header-field   = field-name ":" OWS field-value OWS

注:OWP为Optional WhiteSpace

字段顺序(RFC 7230 3.2.2)

header字段顺序没有要求。建议将包含控制数据的字段放前面,如请求中的Host、响应中的Date,以便implementation尽早决定何时不处理消息。

收到完整header部分后服务器端才可以运用该http请求。以免后面的header字段中有条件、身份凭证、故意误导的重复header字段,而影响请求处理。

3. message-body

请求消息体:
header中的Content-Length和Transfer-Encoding用来标记消息体。请求message与method无关,无论method没有定义使用message body。

响应消息体:
除了特殊响应没有消息体,其他响应都有。

连接管理

管道通信

支持持久化连接的客户端可能对它的请求进行管道通信,例如发送多个请求而不用等待每个请求的响应。服务端可能会并行处理一系列管道来的请求(服务端应该能对请求的处理幂等,解决高并发带来的线程安全问题)。

并发

客户端请求连接,服务端维护连接。

HTTPS

基于TLS和TCP建立授权。

header中的Cookie和Set-Cookie字段被服务器用来在客户端(user agent)存储状态(cookie)。

Cookie

语法:

cookie-header = "Cookie:" OWS cookie-string OWS   
cookie-string =  cookie-pair *( ";" SP cookie-pair 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值