get 和post 的区别

本文详细解析了HTTP协议中的请求方法,包括GET、POST、PUT、DELETE等,阐述了它们的功能、应用场景及区别,如GET用于安全地获取资源,而POST可能修改服务器资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在HTTP的协议中常见的方法:

请求方法(所有方法全为大写)有多种,各个方法的解释如下:
GET     请求获取Request-URI所标识的资源
POST    在Request-URI所标识的资源后附加新的数据
HEAD    请求获取由Request-URI所标识的资源的响应消息报头
PUT     请求服务器存储一个资源,并用Request-URI作为其标识
DELETE  请求服务器删除Request-URI所标识的资源
TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

可以这样理解GET ,POST,PUT和DELETE分别表示查,改,增,删。从这个理解上可以很好理解GET和POST的区别,GET就是用于获取/查询资源信息,而POST则是用来更新资源信息。


  1. 根据HTTP规范,GET用于信息获取,所以是安全的和幂等的。

       安全是指,由于是获取信息不会更改资源信息,所以是安全的。

       幂等的意味着对同一URL的多个请求应该返回同样的结果。

   

   2.跟据HTTP规范,POST表示可能修改改变服务器上的资源的请求。


从表面上来区分GET和POST的区别:

  1. GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连, 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5 %A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4 %BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。而POST把提交的数据则放置在是HTTP包的包体中。

  2. URL和HTTP都没有对参数的长度进行限制,但是特定的浏览器及服务器对它的限制,IE对URL长度(限制是整个URL长度,而不仅仅是你的参数值数据长度)的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。所以在使用GET请求的时候可能会造成参数没有办法全部提交。

  3. 就安全性而言,通过GET提交数据,用户名和密码将明文出现在URL上,因为登录页面有可能被浏览器缓存,其他人查看浏览器的历史纪录,那么别人就可以拿到 你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

  4. GET请求会出现乱码情况,而且很难解决。


总之,GET是向服务器发索取数据的一种请求,而POST是向服务器提交数据的一种请求,在表单中,默认的请求方法是GET.实质上,GET和POST只是发送机制不同,并不是一个取一个发!


以上是个人在前辈的博客和个人的经验总结而来,如有错误敬请提出!

转载于:https://my.oschina.net/u/2273594/blog/525454

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值