GET和POST的安全性
1、GET是通过URL方式请求,可以直接看到,明文传输
2、POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的
3、GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中
GET幂等/POST不幂等
幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。(即副作用)
如果面试只看前边部分即可。
但是在实操中,get和post方法功能类似的,使用建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
区别表现如下:
1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。 用户看不到这个过程。
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
上文参考:https://www.cnblogs.com/chengchengla1990/p/9004797.html
补充:
参考:https://www.zhihu.com/question/28586791/answer/767316172
浏览器将GET和POST定义为:
GET
“读取“一个资源。比如Get到一个html文件。反复读取不应该对访问的数据有副作用。比如”GET一下,用户就下单了,返回订单已受理“,这是不可接受的。没有副作用被称为“幂等“(Idempotent)。
因为GET因为是读取,就可以对GET请求的数据做缓存。这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),或者做到server端(用Etag,至少可以减少带宽消耗)
POST
在页面里