计算机网络HTTP

HTTP请求方法

2019-12-23  本文已影响0人  朝阳溢彩

一、请求分类

HTTP1.0定义了三种请求方法: GET, POSTHEAD方法。

HTTP1.1新增了五种请求方法:PUT, OPTIONS, DELETE, TRACECONNECT 方法。

HTTP2.0新增了一些请求方法,最常用的为:PATCH方法。

1.GET:从服务器请求数据,并返回实体主体。

2.POST:向服务器提交要被处理的数据。数据被包含在请求体body中。可能会导致新的资源的建立或已有资源的修改。

3.HEAD:与 GET 类似,但只返回服务器 HTTP 报头,不返回实体主体。

4.PUT:向服务器提交数据更新指定资源的全部内容。

5.PATCH:与PUT类似,但一般用于更新指定资源的部分内容。可能会导致新的资源的建立。

6.DELETE:请求服务器删除URI(统一资源标识符,Uniform Resource Identifier)所标识的资源。

7.OPTIONS:返回服务器支持的 HTTP 方法,与HEAD类似,常用于测试服务器的性能。

8.TRACE:回显服务器收到的请求,主要用于测试或诊断。

9.CONNECT:HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。

二、幂等性

HTTP的幂等方法,是指无论调用这个请求多少次,都会获得相同结果的HTTP方法。

幂等 GET、PUT、DELETE
非幂等 POST、PATCH

三、GET与POST

GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签 可收藏为书签 不可收藏为书签
缓存 可缓存 不可缓存
历史 参数保留在浏览器历史中 参数不会保存在浏览器历史中
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码
对数据长度的限制 有限制。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符) 无限制
对数据类型的限制 只允许 ASCII 字符 无限制。允许二进制数据
可见性 可见,数据在URL中 不可见,数据在HTTP请求体中
安全性 两者中较差,因为数据可见且可被保存。在发送密码或其他敏感信息时绝不要使用 GET 两者中较好,因为数据不可见且参数不会被保存在浏览器历史或 web 服务器日志中

GET请求可以带body,但最好不要这么做。HTTP 1.1 协议Rfc7231中写到,按照规范,GET等是不可以加body的,否则出问题了不要怪规范没有提醒你。就算服务器不会忽略 GET 请求的body,各种代理和缓存可能也会过滤body。

参考文档:
《Rfc7231》
《Postman工具——请求与响应》
《Get和Post区别》
《HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE》

上一篇下一篇

猜你喜欢

热点阅读