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

查看 110|回复 10
作者:yeekal   
背景:百度新出的 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 机制存在已知实现缺陷,导致连接超时问题”,但是我没找到靠谱的修复方案
有没有大佬遇到过类似问题
感谢各位,问题已解决。
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 查询。
```
大概是说该域名的 ipv6 访问有些问题(通过我的网络), 但是 ipv4 访问是可以的,而 node 的 fetch 并没有处理好 ipv6 的链接问题。而 curl 和 Python requests 则能正常处理。
反正就是把 fetch 换成 https 模块就可以访问了。
另外评论区有用 node 的 fetch 可以访问成功,猜测跟不同地区的网络还有关系。
以上略做参考
        
   
   
   

Fetch, 百度云

nomansky   
感谢各位,问题已解决。
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 查询。
```
大概是说该域名的 ipv6 访问有些问题(通过我的网络), 但是 ipv4 访问是可以的,而 node 的 fetch 并没有处理好 ipv6 的链接问题。而 curl 和 Python requests 则能正常处理。
反正就是把 fetch 换成 https 模块就可以访问了。
另外评论区有用 node 的 fetch 可以访问成功,猜测跟不同地区的网络还有关系。
以上略做参考
yeekal
OP
  
把你 request/response 打印或抓包对比下不就好了
dislazy2023   
@nomansky 对比 python 和 fetch 的么
dislazy2023   
一般是文件名的特殊字符  让 ai 处理一下
mqnu00   
不过这也不太像
mqnu00   


node fetch 没问题啊
QHKZ   
@mqnu00 #5
node v22.15.0
yeekal
OP
  
如果 curl 没问题说明接口是正常的,那么肯定是代码有问题,最好在代码发送请求的时候打断点,看看到底发了什么请求出去,有时候一些第三方库的写法不一样结果也会不一样
yeekal
OP
  
@mqnu00 我用你这个版本试一下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部