【http post】post传输数据大小

2 篇文章 0 订阅

之前知道get请求对url请求长度有限制,post请求没有限制。今天在做程序的时候遇到了这个问题。

场景:我需要将前端生成的Svg图片转化base64生成字符串传入后台,后台根据字符串解码生成到PPT里面。

附:前端将svg生成图片的工具:saveSvgAsPng.js第三方js。https://github.com/exupero/saveSvgAsPng,后端将数据图片生成PPT使用的是POI。

参数传递方式

前端将svg生成base64字符串,然后以form的post方式提交,并且将每个svg的base64字符串生成一个hidden的input。

完成了开发本地测试没问题。发到测试环境用户测试时,发现下载PPT下不下来。浏览器提示如下:

本地调试发现在用httprequest拿参数时,为空。

连忙去点击其他下载看看,结果都能下载下来,ok。百思不得其解,于是去看了看这个request的图片的数量,发现一共有62个,想了想会不会是post传输数据的限制,于是我修改数据减少图片的数量,当减少到45个的时候,PPT下载下来了。这么看来确实是psot请求限制的问题。

查了相关资料,关于http get和post,本身http协议是没有限制其传输数据的大小的,主要在于浏览器与后台server的限制。

get请求参数限制

下面get请求浏览器最大处理能力说明.

Microsoft Internet Explorer (Browser)

IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。
Firefox (Browser)

对于Firefox浏览器URL的长度限制为65,536个字符。

Safari (Browser)

URL最大长度限制为 80,000个字符。

Opera (Browser)

URL最大长度限制为190,000个字符。

Google (chrome)

URL最大长度限制为8182个字符。

Apache (Server)

能接受最大url长度为8,192个字符。

Microsoft Internet Information Server(IIS)

能接受最大url的长度为16,384个字符。

post请求参数限制

post请求理论上没有限制,主要是后台服务器做的限制,比如在Tomcat下取消POST大小的限制(Tomcat默认2M).

打开tomcat目录下的conf目录,打开server.xml 文件,修改

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" maxPostSize="0" />

maxPostSize="0" (设为0是取消POST的大小限制)。

关于maxPostSize在不同tomcat版本下还有不一样,tomcat7.0.63之前该值设置0或者负数代表不限制,tomcat7.0.63之后设置0会导致数据提交不到后台,设置负数则代表不限制post参数大小,慎之!我的版本是7.0.61,所以设置为0

修改之后,成功下载!

参考:https://www.cnblogs.com/joechinochl/articles/6047145.html

战如熊虎,不惜屈命!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值