初見 HTTP

什么是HTTP

HTTP(HyperText Transport Protocol 超文本传输协议) 是服务端和客户端之间通过请求模式传输超文本(例如html文件,js文件,图片…) 内容的协议。

HTTP 请求包括哪些部分

请求报文由头部(首部)(Header),空行,报文主体(内容)组成

  1. 请求Header格式结构:请求行 | 请求首部字段 | 通用首部字段 | 实体首部字段 | 其他
  2. 空行 :CR+LF 换行符
  3. 报文主体:可以带着browser请求内容发送数据
例子:
GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Cache-Control: max-age=0

在chrome开发者模式打开network点击网址查看Request Header 内容:

HTTP 响应包括哪些部分

响应报文由头部(首部)(Header),空行,报文主体(内容)组成

  1. 响应Header格式结构:状态行 | 请求首部字段 | 通用首部字段 | 实体首部字段 | 其他
  2. 空行 :CR+LF 换行符
  3. 报文主体:服务端返回给客户端信息
例子:
200 OK
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jul 2016 16:06:00 GMT
Etag: "c561c68d0ba92bbeb8b0f612a9199f722e3a621a"
Keep-Alive: timeout=5, max=997
Last-Modified: Mon, 18 Jul 2016 02:36:04 GMT
Server: Apache
Set-Cookie: mykey=myvalue; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; secure
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
X-Backend-Server: developer2.webapp.scl3.mozilla.com
X-Cache-Info: not cacheable; meta data too large
X-kuma-revision: 1085259
x-frame-options: DENY

在chrome开发者模式打开network点击网址查看General && Response Header && Preview && Response 内容:

如何使用 curl 命令

打开terminal,输入curl -s -v -H “Hello: xxx” – “https://www.google.com"
请求google首页页面,然后得到响应结果

使用curl做一个请求动作,以及得到响应结果。

如图下

参考资料

后续会增加深入理解http原理

  • MDN http
  • 图解http
  • 其他文章