[Web]get/post(WEB)

1. 概述

关于 get/post,可以查看 rfc-2616 了解详情:

get: RFC 2616 - Hypertext Transfer Protocol – HTTP/1.1
post: RFC 2616 - Hypertext Transfer Protocol – HTTP/1.1

其实,http 中的 get 与 post 只是单纯的名字上的区别,get 请求的数据也可以放在 request body 中,只是浏览器没有实现它。

get/post 可以顾名思义地理解,get 是用来请求数据,那么,既然是请求数据,为什么还要带上数据呢?其实很好理解,比如一个新闻页面,有很多内页,那么 get 请求可能带上的类似这样的参数 page=1,即为请求第一页的数据。post 的话顾名思义就是发送数据,所以需要带上数据

1. 区别

1. get是安全和幂等的

安全: 此处的安全是指不会影响到服务端内容。get请求从服务端获取程序,并不会修改服务端内容。

幂等: 不管同一个get请求发送多少次,服务端最终的状态都是相同的,此为幂等。

2. post 相对 get 请求是 “安全” 的

“安全”: 此处的安全是指get请求使用明文加在URL后面,所有人可见,而post请求是将请求数据封装在请求体中。
既然是安全,为何加双引号呢?是因为抓个包就能看到post请求,所以这个安全有点伪安全。

3. get 请求发送数据更小

虽然http对URL长度并没有限制,但是浏览器和操作系统会限制URL长度,既然get请求数据是放在URL上,那就也要受到URL长度限制。

4. get 能被缓存,post 不能被缓存

这点非常容易理解,打开一个页面,如果之前打开过,那么很明显速度会加快,这是因为 html/js/css/img 等文件都能被浏览器缓存(也可以被服务器缓存),而这些文件的获取,都是用的 get 请求。事实上,web 中的绝大多数请求都是用 get 完成的,post 请求目前为止我只是在 ajax 以及 form 表单中有见过。

但是实际上,http 协议中 post 和 get 都是可以被缓存的,不过不要惊讶,浏览器的实现总是比标准厉害。(post 和 get 真的只有名字上的区别啊。。)

3. 表面现像上面看看GET和POST的区别:

GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。

GET书签可收藏,POST为书签不可收藏。GET能被缓存,POST不能缓存 。

GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。

GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。

GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。

GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值