深入理解HTTP协议

当今最流行的HTTP协议版本为HTTP/1.1,本文内容均以此版本为准

一、报文

HTTP协议的报文分为两种,请求报文和响应报文

请求报文由4部分组成

1.起始行

2.请求头

3.空行

4.请求体

响应报文也由4部分组成

1.起始行

2.响应头

3.空行

4.响应体

其中起始行都是必须的,其他内容可选

请求报文起始行由3部分组成,请求方法、请求URL、协议版本

响应报文起始行也由3部分组成,协议版本、状态码、状态文本

详情参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Messages

二、请求方法

HTTP协议规定了9中请求方法,包括GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH

其中GET、HEAD,CONNECT、OPTIONS、TRACE方法无请求体,DELETE方法为可选请求体

其中HEAD、PUT、TRACE方法无响应体,DELETE方法为可选响应体

详情参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods

三、状态码

状态码范围为100-599,类型分为六种

1xx:请求未完成,其中101常用于websocket连接

2xx:请求成功,其中200为成功响应

3xx:需要重定向,其中301和302表示需要URL重定向,304表示资源未改变

400:客户端错误,其中403表示请求被禁止,404表示资源不存在

500:服务端错误,其中500表示服务器内部错误,503表示服务器拒绝响应

详情参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

四、MIME类型

浏览器通常使用MIME来判断数据类型,所以我们在使用Ajax请求时通常要手动设置MIME类型(Content-Type)

MIME的语法结构为

type/subtype

其中type有六种类型:text、image、audio、video、application、multipart,表示文本、图像、音频、视频、二进制数据、复合类型

在可以在请求体发送数据的Ajax请求中,通常需要指定Content-Type来确定传输的数据格式

以POST请求为例,原生表单提交支持其中的两种

application/x-www-form-urlencoded 参数以查询字符串编码

multipart/form-data 参数以boundary分割,可上传文件

常用的还有text/plain 纯文本形式

POST请求的以上三种方法和GET、HEAD请求合称为简单请求,简单请求和复杂请求在跨域访问(CORS)时会有区别

常用的类型还有现在最流行的application/json 参数为序列化的JSON字符串

详情参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值