我正在尝试从 NodeJS 应用程序向粒子云发送请求。我正在使用 Axios 发出 PUT 请求。应用程序通过同样配置的代理服务器发送请求。
// axios proxy - not working
axios.default.put("https://api.particle.io/v1/devices/<deviceId>/ping", {}, {
proxy: {host: <proxy_ip>, protocol:'http', port:<port_no>},
headers: {
authorization: "Bearer <access_token>"
}
}).then((response) => {
console.log("Success", response.data);
}).catch((error) => {
console.log("Failed", error);
});
错误消息:请求失败,状态码为 400
当我发送此请求时,我从粒子云中收到 400 Bad Request 响应。但是当我使用 NodeJS 的请求模块发送相同的请求时,请求是成功的。
var options = {
method: 'PUT',
url: 'https://api.particle.io/v1/devices/<device_id>/ping',
proxy: {hostname: <proxy_ip>, protocol:'http', port:<port_no>},
headers:
{
authorization: 'Bearer <access_token>'
},
form: false
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(response);
});
响应:正文:'{"online":false,"ok":true}'
当应用程序部署在开放网络上并且在没有代理配置的情况下使用 axios 时,该请求也有效。
// axios without proxy - working
axios.default.put("https://api.particle.io/v1/devices/<deviceId>/ping", {}, {
headers: {
authorization: "Bearer <access_token>"
}
}).then((response) => {
console.log("Success", response.data);
}).catch((error) => {
console.log("Failed", error);
});
问题:
- 为什么来自 Axios 的请求因代理配置而失败?
- 这是 Axios 的固有问题吗?
问候。