HTTP/1.1协议知识小结

1.关于HTTP协议

HTTP协议(HyperText Transfer Protocol)超文本传输协议。首先要明白HTTP是基于TCP的协议,先建立好TCP连接,才能发送HTTP请求。并且1.1版本默认开启Keep-Alive,这样建立的TCP连接可以在多次请求中复用。还要明白HTTP是无状态有会话的,使用Cookies可以创建有状态的会话。在请求头方面1.1版本增加更多的请求头和响应头信息用以增强HTTP的功能例如host主机头。

2.HTTP的请求报文

HTTP的请求报文主要由请求行请求头(请求首部)请求数据(正文主体)组成。

第一部分:请求行

| 请求行字段 | 说明 | 其它 |
| ---------------- | --------------- --------------- | ------------------------------------------------------------ |
| GET(RequestMethod) | 通常用于请求服务端上的某个资源 | 比如GET请求一个基于HTTP的API接口获得JSON字符串,字符串里面是一个列表,列表中包含你想要获取的信息 |
| POST(RequestMethod) | 主动告诉服务端一些信息,将客户端的信息提交到服务端 | 比如POST请求一个基于HTTP的API接口,提交想要提交的信息 |
| PUT(RequestMethod) | 向指定的资源位置上传最新的信息 | 暂无 |
| DELETE(RequestMethod) | 请求服务端删除Request-URI指定的资源 | 暂无 |
| URL | 统一资源定位符 | 要获取的资源的准确路径,由协议,主机IP或域名端口号, 具体目录地址构成 |
| 协议版本 | HTTP协议的版本号 | 比如HTTP/1.1 |

第二部分:请求头
请求头常见字段 说明
Host 告知服务端,请求的资源所在的互联网主机名和端口号
User-Agent 会将创建请求的的浏览器和用户代理名称传递给服务端
Accept 用来告知服务端,用户代理所支持的能够处理的流媒体的类型以及相对优先级
Accept-Encoding 用来告知服务端,用户代理所支持的内容编码以及优先顺序
Accept-Language 用来告诉服务端,用户能够处理的自然语言集
If-Modified-Since 告知服务端若If-Modified-Since字段的值早于资源更新时间则希望服务端处理该请求,反之返回304 Not Modified
Accept-Charset 优先的字符集
第三部分:请求数据
常见字段 说明
Allow 资源可支持的HTTP方法
Content-Encoding 实体使用的编码格式
Content-Language 实体使用的自然语言
Content-Length 实体的大小
Content-Location 替代对应资源的URL
Content-MD5 实体的报文摘要
Content-Range 实体的位置范围
Content-Type 实体的媒体类型
Expires 实体主体的过期时间
Last-Modified 资源的最后修改时间

3.HTTP的响应报文

HTTP响应报文主要由状态行响应首部响应数据(正文实体)

第一部分:状态行

状态行主要包含协议的版本号,状态返回码,状态信息。

常见的HTTP状态返回码 对应的状态信息 说明 其它
200 OK 请求成功 对成功的定义取决于HTTP的请求方法
301 Moved Permanently 永久移动,被请求的资源永久的移动到了新的URL 永久跳转
304 Not Modified 客户端所请求的资源未修改,服务器返回此状态码 暂无
400 Bad Request 客户端请求错误,服务器无法理解 语义有误或者请求参数有误
401 Unauthorized 当前请求需要用户进行身份验证 暂无
402 Payment Required 保留 暂无
403 Forbidden 服务器理解了客户端的请求,但是拒绝执行它 有可能是服务器或服务的权限设置不当
404 Not Found 请求失败,服务器无法根据客户端的请求找到相应资源 有可能是客户端请求了服务器上不存在的资源或者路径没写准确
500 Internal Server Error 服务器内部错误 服务器遇到了不知道如何处理的情况,可能是服务器的设置或者内部程序的问题
501 Not Implemented 服务器不支持客户端的请求方法 暂无
502 Bad Gateway 作为网关或代理的服务器尝试请求时,从远端获取到一个无效的响应 可能是反向代理服务器下面的节点出问题
503 Service Unavailable 服务器由于超载或维护,暂时无法处理客户端的请求 ,不可用 也可能是反向代理服务器后面没有可以提供服务的节点
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求 可能是反向代理服务器后面的服务器过载导致没有在指定的时间内返回数据
第二部分:响应首部
常见首部字段 说明
ETag 资源的匹配信息
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
第三部分:正文实体

正文实体的首部字段可以参考HTTP请求报文中的正文实体首部

还有一些通用的首部字段如下
字段名 说明
Cache-Control 控制缓存的行为
Connection 逐跳首部,连接的管理
Date 创建报文的日期时间
Pragma 报文指令
Upgrade 升级为其它协议
Via 代理服务器的相关信息
Warning 错误通知

3.补充说明

关于状态码

204:成功处理请求但是响应报文不包含实体的主体部分。
206:通过发送范围请求头Range抓取到了资源的部分数据。(partial content)
301:永久重定向,永久跳转。
302:临时重定向,临时跳转。
304:服务端只返回响应头。
400:请求的报文中存在错误。
401:求需要认证或认证失败导致。
403:可能是访问了没有权限的资源导致的禁止访问。
404:访问路径错误或访问的资源已经不存在,服务器找不到客户端请求的指定页面。
412:客户端请求的etag和服务端的不一致。
416:所请求的范围无法满足。
499:服务器主动关闭客户端连接。
500:内部服务器错误,一般是服务器的设置或内部程序错误导致。
502:坏的网关,一般是代理服务器请求后端时后端服务不可用或没有完成响应导致的。
503:当前服务不可用,可能是服务器超载或停机或反向代理服务器后端无可用服务器。
504:网关超时一般是后端服务器没有在指定的时间完成处理请求。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是《图解HTTP》读书笔记的第二篇,主要包括此书的第六章内容,因为第六章的内容较多,而且比较重要,所以单独写为...
    lijiankun24阅读 5,257评论 0 6
  • 作者:李成文;标签: http首部 HTTP报文首部 HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容...
    广州芦苇科技web前端阅读 4,796评论 0 0
  • Web 页面的实现 Web 基于 HTTP 协议通信 客户端(Client)的 Web 浏览器从 Web 服务器端...
    毛圈阅读 4,918评论 0 2
  • HTTP 首部 HTTP 报文首部 HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客 户端和...
    Gu_Ran阅读 4,125评论 0 3
  • 寥寥星天方初醒, 似有微露映人归。 十里红妆梦十里, 相思红豆种相思。 小诗一首,请斧正
    山有木犀阅读 1,819评论 0 1

友情链接更多精彩内容