笔记 HTTP协议

本文从WordPress迁移而来, 查看全部WordPress迁移文章

一:HTTP以TCP方式工作

由于HTTP采用TCP传输数据,因此不会丢失数据,也不会出现乱序的情况

  1. HTTP/1.0:
    1. 客户端与服务器建立TCP连接
    2. 客户端向服务器提出请求
    3. 如果服务器接受请求,则回送响应码和所需的信息
    4. 客户端与服务器断开TCP连接
  2. HTTP/1.1:最大区别是支持持久连接,即发送请求后可以迅速发送另一个请求和接收另一个应答

二:HTTP是无状态的

服务器不会记录客户端的任何状态信息,客户端即使多次请求同一个对象,服务器任会重新发送这个对象,而不管原来是否已经向该客户端发送过该对象

三:客户端程序(一般指浏览器)显示的每个web页面一般都由多个对象构成

对象:由单个URL寻址的文件,其中一个对象是HTML文本,其他对象可能还有图像,语音等(一个web页面有5个图像,该页面由6个对象组成,1个HTML源文件,5个图像)

四:HTTP的请求

方法 作用
GET 请求获取特定的资源,例如,请求一个web页面
POST 请求想指定资源提交数据进行处理(例如,提交表单,上传文件),请求的数据被包含在请求体中
PUT 想指定资源位置上传其最新内容,例如,请求存储一个web页面
HEAD 想服务器获取与GET请求相一致的响应,只不过响应体将不会被返回,这一方法可以获取包含在响应信息头中的元信息
DELETE 请求删除指定资源
OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法
TARCE 回显服务器收到的请求
CONNECT 预留给能够将连接改为管道方式的代理服务器

五:HTTP请求格式

字段 含义
request-line 请求行
headers 标头
blank line 一个空行
request-body 请求主体

注意:空行是必需的,即使没有请求主体也需要保留

六:设置GET请求参数

  1. URL与参数之间用’?’隔开
  2. 参数之间用’&’隔开

    URL?name1=value1&name2=value2&name3=value3&…&nameN=valueN

    ?后面的信息称为查询字符串(query string)

七:POST请求

POST请求参数一般在请求主体中

八:HEAD请求

HEAD请求在客户端程序与服务器程序之间进行交流,而不会返回具体的文档。HEAD请求通常不单独使用

编写爬虫时可获取网页的标志信息或进行安全认证

九:HTTP响应

  • status-line
  • headers
  • blank line
  • response-body

第一行是状态行: HTTP版本号 3位数字组成的状态码 描述状态的短语 (用空格隔开)

十:状态码

状态码 分类 含义
1xx 消息 请求已被服务器接受,继续处理
2xx 成功 请求已成功被服务器接收,理解,并接受
3xx 重定向 需要后续操作才能完成这一请求
4xx 请求错误 请求含有词法错误或者无法被执行
5xx 服务器错误 服务器在处理某个正确请求时发生错误

常用状态码

状态码 含义
200 OK
304 NOT MODIFIED
401 UNAUTHORIZED
403 FORBIDDEN
404 NOT FOUND
405 Method Not Allowed
501 Not Implemented