https协议发送请求体太大,导致了404(tomcat设置的是http端口和请求体大小)

最近在实际中碰到了一个情况,明明tomcat已经设置了请求体大小是10M,但是2M的数据都无法发送过去。

但是同样的数据,用restTemplate来组装发送就可以发送成功。

用抓包工具,重新点击发送数据,只要数据超过2M,就会报错(走的是负载均衡的,https协议),
但是如果直接用ip向服务器发送(数据量大于2M),就可以成功(走的是http协议,虽然请求一些设置为了https,但是用抓包工具看,走的协议是http)

经过对比发现了:就是走Https的不可以,走http就可以
最终查看tomcat的配置发现
虽然启用了Https,但是实际上配置的端口是80端口,访问的时候,是域名访问,不带端口号,https默认走了443端口,而tomcat的请求体大小默认限制是2m,我们系统放开端口数据大小是在80端口,而不是在443端口
修改为如下后即可:

 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        URIEncoding="UTF-8"  clientAuth="false" sslProtocol="TLS"
         keystoreFile="conf/keystore.jks" keystorePass="" maxPostSize="10485760" />

原本的tomcat配置:

  <Connector port="80" 
   maxThreads="100000" minSpareThreads="0" maxSpareThreads="3000" acceptCount="80000"
   scheme="https" proxyName="xxx.xxx.com.cn"  proxyPort="443"
                  connectionTimeout="20000"
                  protocol="org.apache.coyote.http11.Http11NioProtocol"

也就是说:
如果你发送的是https协议,并且url中没有带有端口号,就会默认往443端口发。
如果你发送的是http协议,并且url中没有带有端口号,就会默认往80端口发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值