V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
gotonull
V2EX  ›  HTTP

请教 HTTP 问题

  •  
  •   gotonull · 2020-06-21 23:17:38 +08:00 · 2463 次点击
    这是一个创建于 1376 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    那当然得先发送完毕请求才能开始处理啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4284 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:03 · PVG 09:03 · LAX 18:03 · JFK 21:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.