HTTP的请求与响应

2018-10-14  本文已影响0人  tolstory

HTTP(Hyper Text Transfer Protocol)超文本传输协议。是用于从WWW服务器传输超文本到本地浏览器的传输协议。它采用了请求与响应的模式。今天就来总结一下关于HTTP请求与响应的知识。

整个过程如下:

  1. 浏览器负责发起请求。
  2. 服务器在80端口接收请求。
  3. 服务器负责返回内容(响应)
  4. 浏览器负责下载响应内容。

一、 请求

1.请求示例:
在Git中输入curl指令,获取网页内容。

curl -s -v -H " xxx: Hello World " -- "https://www.baidu.com"

请求内容如下

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.61.1
Accept: */*
xxx: Hello World
  1. 将请求方式改为POST。示例:
curl -X POST -s -v -H "sw: Hello World" -- "https://www.baidu.com"

请求内容如下:

 POST / HTTP/1.1
 Host: www.baidu.com
 User-Agent: curl/7.61.1
 Accept: */*
sw: Hello World

3.请求方式为post并且在该请求中发送指定的数据,示例:

curl -X POST -d "123" -s -v -H "sw: Hello World" -- "https://www.baidu.com"

请求内容如下:

POST / HTTP/1.1 
Host: www.baidu.com
User-Agent: curl/7.61.1
Accept: */*
 sw: Hello World
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

[3 bytes data] // -d: 123
  1. 请求的具体格式:
    由以下四部分组成
    第一部分: 动词 路径 协议/版本号
    第二部分:
    Key1: value1
    Key2: value2
    Key3: value3
    Content-Length: 3
    Content-Type: application/x-www-form-urlencoded
    第三部分:回车
    第四部分:需要上传的数据

常见的几个动词如下:
GET:请求指定的页面信息,并返回实体主体。
HEAD:只请求页面的首部。
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。
PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
OPTIONS: 允许客户端查看服务器的性能。

  1. 如何在Chrome中查看HTTP请求内容?
    (1)打开浏览器自带的开发者工具查看(这里以百度为例子),进入Network中查看。
    (2)输入完整的URL地址。
    (3)在Network中查看第一个请求的request,并且点击view source就能看到以下截图。


    Chrome中查看请求内容

二、响应

  1. 与上一章请求示例1中对应的响应如下:
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: Sun, 14 Oct 2018 11:25:30 GMT
Etag: "58860429-98b"
Last-Modified: Mon, 23 Jan 2017 13:24:57 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/

{ [2443 bytes data]

需要说明的是最后一行显示的是要下载的内容,这里进行了省略。

  1. 与示例2对应的响应如下:
 HTTP/1.1 302 Found
 Connection: Keep-Alive
 Content-Length: 17931
 Content-Type: text/html
 Date: Sun, 14 Oct 2018 11:30:29 GMT
 Etag: "54d9748e-460b"
 Server: bfe/1.0.8.18

{ [3824 bytes data]
  1. 响应的格式

第一部分:协议/版本号 状态码 状态解释
第二部分:
Key1: value1
Key2: value2
Content-Length: 17931
Content-Type: text/html

常见的几个状态码:
1xx:这一类型的状态码,代表请求已被接受,需要继续处理。
2xx:这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
3xx:这类状态码代表需要客户端采取进一步的操作才能完成请求。
4xx:客户端错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

  1. 用Chrome查看响应
    (1)打开开发者工具中的Network
    (2)输入网址并选中第一个响应
    (3)查看Response Headers,点击view source就会看到响应的前两部分。
    (4)查看Response或Preview看到第四部分。


    Chrome中查看响应的内容
上一篇下一篇

猜你喜欢

热点阅读