post 参数过多导致url过长,请求413 HEAD FULL

1.问题描述
java用apache httpclient请求目标应用,目标应用使用jetty+springMvc提供服务,请求的参数使用@RequestParam方式接收,故用a=A&b=B&c=C把请求参数直接追加到url方式调用目标应用,当参数过多时候,发现服务起jetty日志报“413 HEAD FULL”错误
解决方法一:
google搜索对应错误关键字查找解决办法,发现可以通过调整jetty参数配置解决,鉴于当前url长度已经大与一万个字节,直接修改requestHeaderSize大小为16K(16384),重启服务,再次请求目标应用,问题解决。(不知为何url的长度受到requestHeaderSize参数控制,这个看起来像是设置请求头大小的)
解决方法二:
这样的服务可能有很多,每个都修改配置并重启服务肯定不现实。来自postman的灵感,post请求中url+?a=A&b=B&c=C在postman中可以用以下方式替换,证明k=v这样表单数据也是可以放到body里面请求的(之前一直以为只有json格式,请求头Content-Type=application/json才可以)
post请求将表单参数放到body中
修改java程序中参数传递方式把a=A&b=B&c=C这样的参数放到entity中即可,例如
httpPost.setEntity(new StringEntity(“a=A&b=B&c=C”, “UTF-8”));

《解决413 HEAD FULL错误》 https://stackoverflow.com/questions/19333998/413-full-head-error
《jetty参数配置以及默认值(官方)》 http://wiki.eclipse.org/Jetty/Howto/Configure_Connectors
《jetty对请求头大小的控制 》https://cosmo1987.iteye.com/blog/2016975
《jetty配置链接器》 https://blog.csdn.net/tomato__/article/details/32697679

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值