今天在开发从远程服务器下载文件输出到浏览器,前端调试时报错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
今天的文章bug解决【java.io.IOException: 您的主机中的软件中止了一个已建立的连接。】分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33092.html