HTTP请求方法 GET POST【总结】
HTTP 8种请求方法概述
HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),分别为:get,post,put, options,head,delete,trace,connect,来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:
- OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送’*’的请求来测试服务器的功能性。
- HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
- GET:【查】向特定的资源发出请求。
- POST:【改】向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
- PUT:【增】向指定资源位置上传其最新内容。如果URI不存在,则要求服务器根据请求创建资源;如果存在,服务器就接受请求内容,并修改URI的原始版本。
- DELETE:【删】请求服务器删除Request-URI所标识的资源。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。把请求连接转换到透明的 TCP/IP 通道。
上述方法中最基本的方法有4种,分别是GET,POST,PUT,DELETE。URI用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的【查,改,增,删】4个操作。
不过,我们在实际应用中常用的只有get和post,其他请求方式都可以通过这两种方式间接的来实现。
Get请求和post请求
get请求
- 一般来讲get请求是用来获取信息的,它只会获取资源,并不会对资源进行更改,不会影响资源的状态。
- get请求一般是以查询字符串的形式附在URL里。如果数据是英文字母/数字,原样发送;如果是空格,转换为+;如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。因此,存在一定的安全隐患
- get提交的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。比如IE对URL长度的限制是2083字节(2K+35)。这一点相信很多人都一直以为是2k的限制,其实并不是啊。
post请求
- 根据HTTP规范,POST请求是可能会修改服务器上的资源的请求。
- Post是将表单中的数据放在form的数据体中,表单中的参数值对是通过request body发送给服务器,Post的所有操作对用户来说都是不可见的。
- 理论上POST没有限制,可传较大量的数据
面试题:Get请求和post请求的区别
Get请求和post请求的区别
- 根本的区别:GET是用于获取数据,不会对数据进行更改;而POST是用于修改数据的,会对数据进行更改。
- GET使用URL传参,数据放在URL里面,在浏览器中是可见的,非常不安全;而POST是将数据放在请求体中,用户不可见,相对比较安全。
- GET传递的数据是放在URL里面的,虽然HTTP协议规范中没有对URL长度进行限制,但是由于浏览器及服务器的限制,所以GET的URL会有长度上的限制,而POST可发送的数据没有长度限制。
W3school上总结的一个表
GET | POST | |
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 | 可收藏为书签 | 不可收藏为书签 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 是的。当发送数据时,GET方法向URL添加数据;URL的最大长度是 2K 个字符。 | 无限制。 |
对数据类型的限制 | 只允许 ASCII 字符。 | 没有限制。也允许二进制数据。 |
安全性 | 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。 在发送密码或其他敏感信息时绝不要使用 GET ! | POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
可见性 | 数据在 URL 中对所有人都是可见的。 | 数据不会显示在 URL 中。 |
本文来自博客园,作者:白乾涛,转载请注明原文链接:https://www.cnblogs.com/baiqiantao/p/7672471.html