最近在django项目的一个表单上传的模块中,使用ajax提交表单到后台,但是每次提交都会报 Broken pipe from (‘127.0.0.1’, 52594) 这个错误,网上搜索了该错误的原因总结如下
- TCP握手尚未结束时,连接已经close;
- 服务端收到一次read,但write了多次;
- 连接通道被占满,新连接被拒绝时,client中断了所有连接。
- 逻辑执行超时。
但我的逻辑并不复杂,只是插入一条简单的数据而已,并且是本地开发模式。所以最有可能是请求还未得到响应,连接就被强制中断了。但谁会这么无聊呢?
在逐步排查了前后链路的每个环节后,发现了原因:
首先我用form表单里面的按钮button,添加onclick事件,进行ajax请求 。
表单里面的button默认type属性为submit,导致我每次点提交出发click触发事件后,立刻刷新页面,导致post请求未来得及响应连接就中断了,最终报错:Broken pipe
需要form表单里面的button的type属性需要设置为button!