V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
winterssy
V2EX  ›  问与答

Golang HTTP Post 丢数据的问题

  •  
  •   winterssy · 2020-05-07 20:09:02 +08:00 · 1494 次点击
    这是一个创建于 1391 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用 Gin 开发的服务端程序,部署在海外 vps 上。在本地并发向服务器发送 JSON Post 请求,服务器读取 Request Body 的时候偶尔会出现丢失后面 20 字节数据(这个数字不是随机的,要么不少,一少就是 20 个字节,每次测试都一样)的现象,服务器读取到的 Content-Length 也跟实际的不一样(少 20 个字节),就像我发的数据就比原来少 20 字节一样,服务端读取时没有任何报错。单线程循环逐一发请求的话正常,本地环境测试并发也没有问题,有 v 友知道这是什么原因造成的吗?还是说因为服务器离的比较远,有办法解决么?
    第 1 条附言  ·  2020-05-07 21:17:21 +08:00
    已经找到原因了,因为我在客户端每个请求结束后错误调用了 CloseIdleConnections 方法所致,感谢大家的回答。
    7 条回复    2020-05-07 20:49:27 +08:00
    FutherAll
        1
    FutherAll  
       2020-05-07 20:19:12 +08:00
    content-length 带在 request header 上的吗?
    winterssy
        2
    winterssy  
    OP
       2020-05-07 20:29:54 +08:00
    @FutherAll #1 不是,Golang 的 net/http 会默认自动设置 Content-Length 的,后面我自己手动在 Header 加上 Content-Length 也测试了一遍,但服务端读取到的并不是我设置的值,跟没手动设置 Header 一样,少 20 个字节
    Jirajine
        3
    Jirajine  
       2020-05-07 20:35:26 +08:00 via Android
    抓包看看实际发出的请求是多少
    FutherAll
        5
    FutherAll  
       2020-05-07 20:41:18 +08:00
    FutherAll
        6
    FutherAll  
       2020-05-07 20:41:34 +08:00
    是不是读到 eof 了
    nazor
        7
    nazor  
       2020-05-07 20:49:27 +08:00
    TCP 头 20 字节
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3163 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:02 · PVG 21:02 · LAX 05:02 · JFK 08:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.