HTTP请求与响应

请求的格式

1 动词 路径 协议/版本
2 Key1 : value1
2 Key2 : value2
2 Key3 : value3
2 Content - Type : application/x-www-form-urlencoded
2 Host :www.baidu.com
2 User -Agent: curl/7.54.0
3 (始终是一个回车,用来区分第二部分和第四部分)
4 要上传的数据

  • 请求最多包含四部分,最少包含三部分(第四部分可以为空)
  • 第三部分永远都是一个回车
  • 动词有 GET POST PUT PATCH DELETE HEAD OPPTIONS 等
  • 这里的路径包括 查询参数 ,但不包括锚点
  • 如果没写路径,路径默认为 /
  • 第二部分中的content-type 标注了第四部分的格式

用Chrome发请求

  1. 打开网页检查里的network
  2. 地址栏输入网址
  3. 再network里点击第一个,查看request ,点击 view source
  4. 可以看大请求的前三部分了
  5. 如果有第四部分的内容,可以在formdata或payload看到
    curl -s -v -H "wx: xxx" -- "https://www.baidu.com" 这是一个get请求,请求的内容为:

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.57.0
Accept: /
wx: xxx

curl -X POST -s -v -H "wx: xxx" -- "https://baidu.com"是一个post 请求,请求的内容为:

POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.57.0
Accept: /
wx: xxx

curl -X POST -d "111111" -s -v -H "wx: xxx" -- "https://www.baidu.com"这是post带数据的请求:

POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.57.0
Accept: /
wx: xxx
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

} [6 bytes data]
*upload completely sent off: 6 out of 6 bytes

响应

响应示例1(get请求):

< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Fri, 21 Jun 2019 12:05:08 GMT
< Etag: "58860411-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:33 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
{ [2443 bytes data]
*Connection #0 to host www.baidu.com left intact

响应示例2(post请求):

< HTTP/1.1 302 Found
< Connection: Keep-Alive
< Content-Length: 17931
< Content-Type: text/html
< Date: Fri, 21 Jun 2019 12:21:32 GMT
< Etag: "54d9748e-460b"
< Server: bfe/1.0.8.18
<
{ [2708 bytes data]
*Connection #0 to host www.baidu.com left intact

响应示例3(带数据的post请求):

< HTTP/1.1 302 Found
< Connection: Keep-Alive
< Content-Length: 17931
< Content-Type: text/html
< Date: Fri, 21 Jun 2019 12:22:29 GMT
< Etag: "54d9748e-460b"
< Server: bfe/1.0.8.18
<
{ [3824 bytes data]
*Connection #0 to host www.baidu.com left intact

注意:

get请求和post请求对应的响应可以不一样也可以一样;
响应的第四部分可以很长.

响应的格式:

1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content - Length: 17931
2 Content - Type: text/html
3 回车
4 要下载的内容
状态码(是服务器对浏览器说的话)是需要记忆的:
HTTP状态码

  • 1xx 不常用
  • 2xx 表示成功; 200是通常的成功,204 创建成功
  • 3xx 表示滚吧...301 以前存在的现在搬走了,在第二部分会给一个location让你去找;302 临时不存在(暂时被封了之类的);304 与上一次内容相同,可以直接下载上一次的.
  • 4xx 表示你错了.404 地址打错了
  • 5xx 表示 好吧,我错了.服务器出问题了 502
  • 第2部分的中的 Content-Type 标注了第4部分的格式,Content-Type遵循MIME规范

用chrome查看响应

  1. 打开network
  2. 输入网址
  3. 选中第一个响应
  4. 查看Response Headers,点击view source
  5. 会看到响应的前两部分
  6. 查看Response会看到第四部分的内容

你可能感兴趣的:(HTTP请求与响应)