bug解决【java.io.IOException: 您的主机中的软件中止了一个已建立的连接。】

今天在开发从远程服务器下载文件输出到浏览器,前端调试时报错java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

网上的解决办法很多,这里对这个问题总结一下,避免下次遇到。

原因一:远程服务器上Tomcat设置响应时间过短,默认是20s,如果下载文件过大,时间过长,则可能会导致文件下载失败,出现broken pipe异常。
如果是这个原因,可以找到Tomcat中/conf目录下的配置文件server.xml,修改其中的配置:

<Connector connectionTimeout="60000" port="80" protocol="HTTP/1.1" redirectPort="8443"/>

但是我的文件下载基本都在一两秒,排除这个原因。

原因二:有网友说是Tomcat的版本问题,但是我的接口在浏览器地址栏中可以正常访问,说明不是Tomcat的问题,故排除。

原因三:跨域问题导致。网上说要设置response的请求头属性。果然加上之后,前端调用接口正常。

response.addHeader("Access-Contro1-Allow-Origin”, "*");

猜测应该是本地程序获取远程服务器上的文件流时导致的跨域问题,但是有待验证。

原因四:网上说,还有一种情况是因为前端代码引起的,未验证,仅供参考。
1、异常表现:我在jsp文件中有一个表单,里面有一个保存事件按钮。保存
onclick的js函数里我是用ajax提交的数据,用于局部刷新页面。

2、问题原因:在Internet Explorer 的默认类型是 “button”,而其他浏览器中(包括 W3C 规范)的默认值是 “submit”。
所以导致了表单重复提交。出现“java.io.IOException: 你的主机中的软件中止了一个已建立的连接”异常。

3、问题解决:把代码 改为保存,为按钮定义Type属性为button。

参考:https://www.cnblogs.com/archwyf/p/9044952.html

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值