请教 HTTP 问题

2020-06-21 23:17:38 +08:00
 gotonull

现在项目遇到一个 HTTP 的问题请教一下各位大佬。就是 HTTP 文件上传时,请求体中的文件发送到一半了,此时服务器内部出现了错误,我们就会响应一个 500 的响应包,然后关闭连接,但此时客户端并不会去处理这个响应而是继续向连接中写入未发送完的文件,因为此时服务端已经将连接关闭了,所以就报写入错误了。这个有什么办法让客户端不再写入而是处理我们的响应吗

2496 次点击
所在节点    HTTP
11 条回复
xxxy
2020-06-21 23:43:10 +08:00
tcp 链接中断是协议层的。 感觉是不能由网页控制的。
luopengfei14
2020-06-21 23:43:25 +08:00
客户端一遇到 500,中断上传?
ahhui
2020-06-22 07:47:27 +08:00
1. 采用分段上传方式,
2. 捕获 connection reset by peer 异常
cheng6563
2020-06-22 09:14:13 +08:00
中断连接吧
julyclyde
2020-06-28 17:57:50 +08:00
发送到一半的时候你没办法发送 500,因为 response status 和 header 都早已发送完毕了
gotonull
2020-06-28 19:04:12 +08:00
@julyclyde 你没有懂我的意思,我说的发一半是请求发一半,而不是响应发一半
julyclyde
2020-06-28 19:05:11 +08:00
@gotonull 但是请求发送完毕之前,服务器也不该发送回应啊
gotonull
2020-06-28 19:08:05 +08:00
@julyclyde 为啥不该发生,请求发一半的时候服务端内部出现了问题,无法处理接下来的数据了,此时已经确定会失败了,难道还要让客户端接着发完再响应吗?
julyclyde
2020-06-29 17:11:13 +08:00
@gotonull 标准要求的
gotonull
2020-06-29 17:27:14 +08:00
@julyclyde 标准有这个吗?能给个标准出处的链接或者图文吗
julyclyde
2020-06-29 18:29:18 +08:00
@gotonull rfc2616 很开头的对方就写了,是请求响应协议
1.4 Overall Operation
The HTTP protocol is a request/response protocol

那当然得先发送完毕请求才能开始处理啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/683584

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX