当访问API时,Nodejs/Expressjs请求返回404
问题描述:
我试图访问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响应中获取的最详细的错误信息是状态码。
答
这可以帮助你
app.get('/api', function(req, res) {
request({
url: url,
method: "POST",
json: data
}, function(err, apiRes, apiBody) {
res.send(apiBody);
});
});
按照我知道POST不支持QS(查询字符串)
从QS更改为JSON的伎俩!谢谢您的帮助。 – Copernicus