主题
  • 默认模式
  • 浅蓝色模式
  • 淡红色模式
  • 深夜模式

什么是 HTTP?

超文本传输协议(Hypertext Transfer Protocol,缩写 HTTP)旨在启用客户端和服务器之间的通信。

HTTP 充当客户端和服务器之间的请求-响应协议。

举例:客户端(浏览器)向服务器发送 HTTP 请求;然后服务器将响应返回客户端。响应包含有关请求的状态信息,也可能包含所请求的内容。


HTTP 方法

方法 作用
GET 获取资源
POST 创建资源或提交数据
PUT 完全替换/更新资源
HEAD 仅获取响应头信息
DELETE 删除资源
PATCH 部分更新资源
OPTIONS 获取资源支持的通信选项

最常用的两种方法是:GET 和 POST。


GET 方法

GET 用于从指定资源请求数据,是最常见的 HTTP 方法之一。

请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

/test/demo_form.php?name1=value1&name2=value2

有关 GET 请求的其他一些注释:

  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET 请求有长度限制(因浏览器而异)
  • GET 请求只应当用于取回数据(不修改)

POST 方法

POST 用于将数据发送到服务器来创建/更新资源,也是最常见的 HTTP 方法之一。

通过 POST 发送到服务器的数据存储在 HTTP 请求的请求主体中:

POST /test/demo_form.php HTTP/1.1
Host: www.kaicz.com
name1=value1&name2=value2

有关 POST 请求的其他一些注释:

  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求
  • POST 用于创建或修改资源

PUT 方法

PUT 用于将数据发送到服务器来创建/更新资源。

HTML 原生不支持 PUT 方法,通常通过 JavaScript 或 RESTful API 使用。

POST 和 PUT 之间的区别在于 PUT 请求是幂等的(idempotent)。也就是说,多次调用相同的 PUT 请求将始终产生相同的结果。相反,重复调用POST请求具有多次创建相同资源的副作用。

有关 PUT 请求的其他一些注释:

  • PUT 替换目标资源的所有当前表示
  • PUT 具有幂等性(多次执行效果相同)

HEAD 方法

与 GET 相同,但不返回响应体,只返回头部信息。

换句话说,如果 GET /users 返回用户列表,那么 HEAD /users 将发出相同的请求,但不会返回用户列表。

HEAD 请求对于在实际发出 GET 请求之前(例如在下载大文件或响应正文之前)检查 GET 请求将返回的内容很有用。

有关 HEAD 请求的其他一些注释:

  • HEAD 用于检查资源是否存在或获取元数据
  • HEAD 不返回实际内容

DELETE 方法

DELETE 方法删除指定的资源。

HTML 原生不支持 DELETE 方法,通常通过 JavaScript 或 RESTful API 使用。

有关 DELETE 请求的其他一些注释:

  • DELETE 删除指定的资源
  • DELETE 具有幂等性

OPTIONS 方法

OPTIONS 方法用于获取服务器支持的 HTTP 方法。

有关 OPTIONS 请求的其他一些注释:

  • OPTIONS 用于 CORS 预检请求
  • OPTIONS 返回服务器支持的请求方法

比较 GET 与 POST

下面的表格比较了两种 HTTP 方法:GET 和 POST。

特性 GET POST
后退按钮/刷新 无害 数据会被重新提交
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的(受限于浏览器) 无限制
对数据类型的限制 只允许 ASCII 字符。 没有限制,也允许二进制数据
安全性 不适合安全信息使用 参数不会记录在浏览器历史中
可见性 数据在 URL 中对所有人可见 数据不会显示在 URL 中



评论区 0
发表评论