当咱们被问及 HTTP 的 GET 与 POST 两种请求方式的区别的时候,不少答案是说 GET 的数据须经过 URL 以 Query Parameter 来传送,而 POST 能够经过请求体来发送数据,因此因 URL 的受限,每每 GET 没法发送太多的字符。这个回答比如在启用了 HTTPS 时,GET 请求 URL 中的参数仍然是明文传输的同样。html
GET 果然不能经过 Request Body 来传送数据吗?非也。如此想法多半是因循着网页中 form 的 method 属性只有 get 与 post 两种而来。由于把 form 的 method 设置为 post, 表单数据会放在 body 中,而 method 为 get(默认值) 时, 提交时浏览器会把表单中的字符拼接到 action 的 URL 后做为 query parameter 传送。因而乎就有了这么一种假像:HTTP GET 必须经过 URL 的查询参数来发送数据。浏览器
其实 HTTP 规范并未规定说 GET 就不能发送 body 数据,在 RFC GET 中只是说ide
The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.post
只是说 GET 意味着经过 URI 来识别资源。测试
我也是本着传统上对 GET 与 POST 区别的误解不少年,今天忽然意识到 GET 应该可使用 body, 何况 HTTP 自己是一个纯文本的协议。没有测试就没有 100% 的发言权,因此作了以下的测试 阅读全文 >>orm