python中post请求个get请求的区别

在了解爬虫时提到了这个问题,在有时请求界面是用的是post请求,

有时用的是get请求,那么两者到底有什么不同???

有以下几个方面:

1 安全程度不同。post更加安全,不会作为url的一部分,不会被缓存,保存

在服务器日志、以及浏览器浏览记录中。

注:http协议用法约定get使用url或cookie传参,而post将数据放在body中

2 数据容量不同,post发送的数据更大,get有url长度限制

注 http协议并未规定get和post的长度限制,但浏览器和web服务器会对url的长度有所限制

,例如 IE  最大长度为2083byte;chrome 最大长度为8182byte,Apache限制为8192 byte

3 支持的数据类型不同。post可以发送更多的数据类型,get只能发送ASCII字符

4 速度不同 post比get慢,

5 应用的场景不同。post用数据的修改和写入,get一般用于搜索排序和筛选之类的操作

6 是否幂等性   get请求是幂等性的,而post不是(幂等性是指一次和多次请求某一个资源是应具有

同样的副作用。简单来说意味着对同一url的多个请求应该返回同样的结果。)

7 表单提交中get和post方式的区别归纳

(1) get 只能从服务器上获取数据,post是向服务器传送数据

(2)对于表单的提交方式,在服务器只能用request.QueryString来获取get方式提交过来的数据,用post

提交的数据只能用request.Form来获取

(3)一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。

比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。

但是在分页程序中,用Get方式就比用Post好。

 

 

为什么get比post更快
1.post请求包含更多的请求头
因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如:content-type),这其实是微乎其微的。
2.post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
post请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应
get请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回200 OK响应
从过程来说,get的总耗是post的2/3左右。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值