Nodejs / Expressjs Request在访问API时返回404

时间:2016-03-15 14:38:57

标签: javascript ajax node.js request http-post

我尝试访问API的授权数据,并且我能够通过浏览器中的ajax调用成功获取访问数据,但不是通过使用请求包或本机http Nodejs / Expressjs中的请求方法。

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调用返回一个页面,其中包含访问API其余部分所需的令牌数据。我希望从Node中的请求获得相同的返回值,但是我得到一个错误页面,说" 404 - 找不到文件或目录。您要查找的资源可能已被删除,名称已更改或暂时不可用。" apiRes对象也有404 statusCode,但我无法访问错误信息以外的任何数据。

http请求是否有理由在浏览器中成功,而不是在服务器中,即使它们携带相同的参数和URL?我在这个API中遇到了与其他网址相同的404问题,在这些情况下我遇到了问题,因为API没有包含" Access-Control-Allow-Origin&#34 ;标题在其响应中。我认为这是一种可能性,但我可以从API响应中获取的最详细的错误信息是状态代码。

1 个答案:

答案 0 :(得分:2)

这可能对您有所帮助

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

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