Nodejs/Expressjs访问API时请求returns404

Nodejs/Expressjs Request returns 404 when accessing API

我正在尝试访问 API 的授权数据,我能够通过浏览器中的 ajax 调用成功获取访问数据,但无法通过使用请求包或Nodejs/Expressjs.

中的原生http请求方式

ajax 调用:

var url = 'https://subdomain.example.com/api/auth';
var data = {
    token: "Data token" // A token representing user credentials
};

$.ajax({
    url: url,
    data: data,
    type: "POST",
    success: function(resp) {
       console.log(resp);
    }
});

nodejs请求调用:

var url = 'https://subdomain.example.com/api/auth';
var data = {
    token: "Data token"
};

app.get('/api', function(req, res) {
    request({
        url: url,
        method: "POST",
        qs: data
    }, function(err, apiRes, apiBody) {
        res.send(apiBody);
    });
});

ajax 调用 return 一个包含令牌数据的页面,我需要访问 API 的其余部分。我希望从 Node 中的请求中获得相同的 return 值,但我却收到一个错误页面,上面写着“404 - 找不到文件或目录。您正在寻找的资源可能已被删除,名称已更改,或暂时不可用。” apiRes object 也有 404 statusCode,但我无法访问除错误信息之外的任何数据。

有什么理由可以解释为什么一个 http 请求在浏览器中会成功,而在服务器中却不会成功,即使它们携带相同的参数和 url?我在这个 API 中遇到了与其他 URL 相同的 404 问题,在那些情况下我遇到了这个问题,因为 API 没有包含 "Access-Control-Allow-Origin" header 在其回应中。我想这是可能的,但我可以从 API 响应中提取的最详细的错误信息是状态代码。

这可能对你有帮助

app.get('/api', function(req, res) {
request({
    url: url,
    method: "POST",
    json: data
}, function(err, apiRes, apiBody) {
    res.send(apiBody);
});
});

据我所知POST 不支持 qs(查询字符串)