GET和POST是什么
基本概念
GET和POST是 HTTP协议中的两种发送请求的方法
HTTP是什么
HTTP是hypertext transfer protocol(超文本传输协议)的简写, 它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。 一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容
请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
HTTP协议实际上是基于RFC规范的,实际上GET和POST请求的语法是完全相同的,但是在RFC规范中,给GET请求和POST请求规定了语义,规定GET用来获取信息,POST用来发送信息
get与post的区别
如果什么前提都没有,也就是不用任何规范限制的话,我们只考虑语法来说,这两个方式是没有任何区别的,只有名字不一样
如果考虑浏览器实现的RFC,或者说Web环境下的RFC的话,那么区别就很明显了
get方式
- GET方式是通过URL请求传递用户所输入的内容,其提交的内容会全部显示的浏览器的地址栏中;其安全性很低。如果用户输入的内容包含密码之类的私人信息时很容易被其他人获取
- GET方式提交需要用到Request.QueryString来取得变量的值
- GET提交具有长度限制,最长不能超过2048字节
- GET是从服务器上获取数据
- GET是把参数数据队列加到提交表单的action属性所指的URL中,值和表单内容一一对应,在URL中可以看到
- 在页面重新刷新载入时,没有提示框询问“是否重新发送请求”
- 在做请求时,GET是将表单内容放到信息的请求头中
post方式
- POST提交不会将用户所输入的个人信息显示在浏览器的地址栏中且地址栏中没有什么变化
- POST方式提交需要用到Request.Form来取得变量的值
- POST没有提交长度限制
- POST是向服务器传送数据
- POST是通过HTTP post机制,将表单内容 中各个字段与其内容旋转在HTML HEADER内一起传送到action属性所批的URL地址。用户是看不到这一过程的
- 在页面重新刷新载入时,会有提示框询问“是否重新发送请求”
幂等
幂等的概念
如果一个操作没有副作用,或者多次操作对资源产生的副作用相同,我们就说这个操作是幂等的
区别
get方法用户获取资源,没有副作用,所以是幂等的;
post用于创建资源,是有副作用的,且副作用不同,所以post不是幂等的。(两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI)