HTTP 专题

发布时间: 更新时间: 总字数:744 阅读时间:2m 作者: 分享 复制网址

超文本传输​​协议(HTTP) 是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的。

介绍

HTTP(HyperText Transfer Protocol,超文本传输协议) 是互联网使用的核心协议,是所有的Web应用程序的通信协议。

说明:

  • HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应
  • 传输层使用有状态的TCP传输,HTTP协议本身无状态,可使用 Web 服务中 Session 和 Cookie 记录状态

请求 request

Http 请求消息分为消息头和消息体。

<request info>\r\n
key1: value1\r\n
key2: value2\r\n
...
\r\n // 空行
<request body>

说明:

  • request info 组成:<method[GET|POST|PUT|...]> <url> <protocol[HTTP/1.0|HTTP/1.1|HTTP/2]>
  • Header
    • Host
    • User-Agent
    • Referer 发出请求的原始 URL
    • Cookie

响应 response

<response info>\r\n
key1: value1\r\n
key2: value2\r\n
...
\r\n // 空行
<response body>

说明:

  • response info 组成:<protocol[HTTP/1.0|HTTP/1.1|HTTP/2]> <status code[20x|30x|40x|50x]> <status text[Accept|...]>
  • Header
    • Server web 服务器软件名称
    • Content-Type 消息体类型,浏览器解析使用
    • Content-Length 消息体的字节长度
    • Set-Cookie 设置 cookie 信息,后续再请求会带回该信息,一般存储状态信息

Multipart formposts

POST /submit.cgi HTTP/1.1
Host: example.com
User-Agent: curl/7.46.0
Accept: */*
Content-Length: 313
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------fa163e399192a323
--------------------------fa163e399192a323
Content-Disposition: form-data; name="person"

anonymous
--------------------------fa163e399192a323
Content-Disposition: form-data; name="secret"; filename="file.txt"
Content-Type: text/plain

contents of the file
--------------------------fa163e399192a323--

说明:

  • --------------------------fa163e399192a323 是开始符,
  • -- 最后两个是结束符
  • Content-Disposition 响应头指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地
    • Content-Disposition: form-data
    • Content-Disposition: form-data; name="fieldName"
    • Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"

HTTP 方法

  • GET 获取资源
  • POST 创建资源
  • PUT 修改资源
  • DELETE 删除资源
  • HEAD 检测资源是否存在
  • OPTIONS 请求服务器报告某一资源的 HTTP 方法,通常返回 Allow 消息头响应
  • CONNECT
  • TRACE 诊断

RPC vs HTTP

  • RPC 是一个完整的远程调用方案,包括:接口规范序列化/反序列化规范通信协议(如七层的HTTP、四层的TCP等)
  • HTTP 是一个通信协议,工作中 OSI 的第七层

示例

最新评论
加载中...
Home Archives Categories Tags Statistics