GET方法和POST方法
HTTP协议中有很多请求方法,其中最为常见的是GET方法和POST方法。
GET方法
GET是HTTP的默认请求方法。通常用于请求服务器发送某个资源。
- 没有请求体
- 数据必须在1K之内
- GET请求数据会暴露在浏览器的地址栏中
GET请求常用的操作:
- 在浏览器的地址栏中直接给出URL,那么就一定是GET请求。
- 点击页面上的超链接也一定是GET请求
- 提交表单时,表单默认使用GET请求,但可以设置为POST
客户端用GET方法发起一次HTTP请求的过程如下图所示:
POST方法
POST方法起初是用来向服务器输入数据的(POST用于向服务器发送数据,PUT用于向服务器上的文件等资源中存储数据)。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到它要去的地方(比如,送到一个服务器网关程序中,然后由这个程序对其进行处理)。
- 数据不会出现在地址栏中
- 数据的大小没有上限
- 有请求体
- 请求体中如果存在中文,会使用URL编码
客户端用POST方法发起HTTP请求(向服务器发送表单数据)的过程如下图所示:
两种方法的比较
GET是从服务器上获取数据,POST是向服务器传送数据
GET没有请求体,而POST有请求体。因为GET方法中,请求参数不会放在URL下面,而是放在URL后面了。
GET请求参数都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数来产生响应内容,即“Get”请求的参数是URL的一部分。 例如: http://www.baidu.com/s?wd=Chinese
POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码。
注意:避免使用Get方式提交表单,因为有可能会导致安全问题。 比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。