我尝试访问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响应中获取的最详细的错误信息是状态代码。
答案 0 :(得分:2)
这可能对您有所帮助
app.get('/api', function(req, res) {
request({
url: url,
method: "POST",
json: data
}, function(err, apiRes, apiBody) {
res.send(apiBody);
});
});
据我所知,POST不支持qs(查询字符串)