【发布时间】:2017-04-20 21:40:14
【问题描述】:
所以我试图通过nodejs下载一个在浏览器中可以正常打开的文件,甚至可以在curl等工具中正常下载。
但是 nodejs 只是由于某种原因无法下载文件。我尝试通过节点中的request 模块和名为download-cli 的节点cli 模块下载文件。它们都以 400 或 404 响应失败,但文件可以通过 curl 等常规工具正常下载。
可能是什么问题?我已经尝试将用户代理设置为 Firefox 的用户代理(它打开得很好),但这并没有成功。我假设问题不在于用户代理,因为 curl 没有自己的用户代理。
有问题的 url 可以是来自 alicdn 的任何 url,但我们以这个为例: https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-синхронизации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg
这是通过节点download-cli 工具和powershell 中的Invoke-WebRequest 工具运行上述url 得到的响应。
PS C:\code> download https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-син
хронизации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg
Couldn't connect to https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-синхронизации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg (404)
PS C:\code> curl https://ae01.alicdn.com/kf/HTB1ftVmPVXXXXXUXVXXq6xXFXXXG/Langtek-smart-watch-gt12-часы-поддержка-синхрон
изации-notifier-sim-карты-подключение-bluetooth-для-android-apple-iphone.jpg_640x640.jpg
StatusCode : 200
StatusDescription : OK
Content : {255, 216, 255, 224...}
RawContent : HTTP/1.1 200 OK
X-Application-Context: fileserver2-download:prod:7001
From-Req-Dns-Type: NA,NA
SERVED-FROM: 72.247.178.95
Connection: keep-alive
Network_Info: DE_FRANKFURT_16509
Timing-Allow-Ori...
Headers : {[X-Application-Context, fileserver2-download:prod:7001], [From-Req-Dns-Type, NA,NA], [SERVED-FROM, 72.247.178.95],
[Connection, keep-alive]...}
RawContentLength : 114927
【问题讨论】:
-
您能否提供用于从 Node 下载文件的代码?如果我们不知道您是如何尝试这样做的,则无法回答。
-
@serge1peshcoff 我尝试通过各种代码下载,例如使用本机 http 模块、使用请求模块等。该代码在 99% 的情况下运行良好,但在这里失败了。查看失败的实际原因的答案。
标签: node.js powershell http curl http-headers