同一 百度云存储 URL, Python 请求成功、浏览器访问成功,唯独 Node.js fetch 失败

yeekal 2026-06-17 16:57 1

背景:百度新出的 paddle ocr vl 1.6 ,根据其 api 文档( python 写的),在测试时会返回一个结果链接,请求该链接获取其中的 json 结果


该链接 python requests 可以访问,本地 curl 可以访问,浏览器可以直接访问,但是在 nextjs 项目里面前后端通过 fetch 均无法访问


链接示例: https://paddleocr-store-1.bj.bcebos.com/v1/job/b2e41a29bdef834cf1786aa41d950cdf232126f264bb994fbf98bb1eae787492/json/cc48ad7a5e6ebb092bfe10bd2619859c.json?authorization=bce-auth-v1%2FALTAKDN8mY5KlNI7zaRpLmOqrw%2F2026-06-17T07%3A28%3A33Z%2F604800%2F%2Fac27632bf11a36d6cd2f12b791dbb8015330f430ec39e4925a4d396691c88e94


我让 deepseek 写一个单页 html(排除任何框架干扰),试图访问该链接也不行,并排除了 CORS (跨域资源共享)问题。


其中有一个可能性是“Node.js v18/v20/v22 中的 Happy Eyeballs 机制存在已知实现缺陷,导致连接超时问题”,但是我没找到靠谱的修复方案


有没有大佬遇到过类似问题

最新回复 (9)
  • nomansky 06-17 17:00
    1
    把你 request/response 打印或抓包对比下不就好了
  • yeekal 楼主 06-17 17:02
    2
    @nomansky 对比 python 和 fetch 的么
  • dislazy2023 06-17 17:20
    3
    一般是文件名的特殊字符 让 ai 处理一下
  • dislazy2023 06-17 17:21
    4
    不过这也不太像
  • mqnu00 06-17 17:28
    5

    node fetch 没问题啊
  • mqnu00 06-17 17:30
    6
    @mqnu00 #5

    node v22.15.0
  • QHKZ 06-17 18:21
    7
    如果 curl 没问题说明接口是正常的,那么肯定是代码有问题,最好在代码发送请求的时候打断点,看看到底发了什么请求出去,有时候一些第三方库的写法不一样结果也会不一样
  • yeekal 楼主 06-17 20:24
    8
    @mqnu00 我用你这个版本试一下
  • yeekal 楼主 06-17 21:45
    9
    @mqnu00 换版本也不行。最后通过改为 https 模块解决了。 猜测跟网络环境也有关系。

    ai 给出的原因和解决办法:

    ```text
    问题在于 Node.js 自带的 fetch (使用 undici )与该特定主机的连接存在超时问题。而原生 https 模块在显式强制使用 IPv4 并指定 IP 地址时可以正常工作。

    根本原因:undici ( Node 的 fetch 后端)无法与 paddleocr-store-7.bj.bcebos.com 建立 TCP 连接(可能是 IPv6/TLS 握手问题),而 curl 和 Python requests 则能正常处理。

    修复方案:使用原生 https 模块,并显式进行 IPv4 查询。
    ```

    感谢各位
* 帖子来源V2EX
返回