jun*_*var 4 javascript node.js axios
我正在尝试使用 Node 的本机https模块和第 3 方axios模块(非常常用)执行 GET 请求:
const endpoint = 'https://www.pathofexile.com/api/trade/data/stats';
require('axios')
.get(endpoint)
.then(response => console.log('axios', response.status));
// prints 200
require('https')
.get(endpoint, {},
response => console.log('https', response.statusCode));
// prints 403
Run Code Online (Sandbox Code Playgroud)
该axios请求按预期正常工作;response.data我也可以查看。但https请求失败并返回 403。
curl从命令行也可以正常工作。由于https曾经工作过,我的预感是服务器一定已经改变了一些东西,并且https.get必须axios.get做一些稍微不同的事情(例如默认发送不同的标头),而服务器不再对此漠不关心。
经过一些测试后,我注意到默认情况下该https模块不包含标User-Agent头,而axios和curl两者都包含。服务器拒绝您的请求,因为您没有User-Agent设置。
要解决此问题,只需指定您选择的自定义User-Agent:
require('https')
.get(endpoint, {headers: {'User-Agent': 'whatever'}},
response => console.log('https', response.statusCode));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |