【http post】post传输数据大小

之前知道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。

【http post】post传输数据大小_第1张图片

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

【http post】post传输数据大小_第2张图片

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

【http post】post传输数据大小_第3张图片

 

连忙去点击其他下载看看,结果都能下载下来,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 文件,修改

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

 

 

【http post】post传输数据大小_第4张图片

战如熊虎,不惜屈命!

 

你可能感兴趣的:(java,html)