2016-03-15 114 views
0

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

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中遇到了与其他URL相同的404问题,在这种情况下,我遇到了这个问题,因为API的响应中没有包含“Access-Control-Allow-Origin”标头。我想这是可能的,但是我可以从API响应中获取的最详细的错误信息是状态码。

回答

2

这可以帮助你

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

按照我知道POST不支持QS(查询字符串)

+0

从QS更改为JSON的伎俩!谢谢您的帮助。 – Copernicus