我目前正在使用Node.js + Mongoose创建一个API服务器。现在,我遇到了一个API的问题。当我用所需的标题(即用户名,密码,apikey)调用该API时 在请求中,缺少一些标题。
{
"date": "Mon, 19 Oct 2015 07:16:05 GMT",
"server": "nginx/1.6.2 (Ubuntu)",
"x-powered-by": "Express",
"etag": "\"-950978302\"",
"access-control-allow-methods": "GET,PUT,POST,DELETE",
"content-type": "application/json",
"access-control-allow-origin": "*",
"connection": "keep-alive",
"access-control-allow-headers": "Origin, X-Requested-With, Content-Type, Accept, USERNAME, PASSWORD, APIKEY, SECRETKEY, API_KEY, SECRET_KEY",
"content-length": "3791"
}
但是在更新了一些数据并且我用另一个标题请求之后,它显示了下面标题的结果(没有更新)。
{
"access-control-allow-origin": "*",
"date": "Mon, 19 Oct 2015 07:28:24 GMT",
"last-modified": "Mon, 19 Oct 2015 06:33:52 GMT",
"server": "nginx/1.6.2 (Ubuntu)",
"etag": "\"-35186508\"",
"content-length": "944",
"content-type": "application/json"
}
标题中没有access-control-allow-headers
,content-type
,connection
和其他人。我已经在我的应用程序中设置了标题。
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, USERNAME, PASSWORD, APIKEY, SECRETKEY, API_KEY, SECRET_KEY");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Cache-Control', 'no-cache');
next();
});
答案 0 :(得分:0)
您无法获得USERNAME
,PASSWORD
等标题。
您应该使用X-
前缀定义自定义标头。
将X-
前缀添加到您想要获得的标头的自定义标头中。
有mozilla's doc about HTTP headers。
BTW,通常如果您使用基于令牌(apikey)的身份验证,则不需要用户名和密码作为标头。只需传递一次即可验证用户身份。您也可以将这些参数作为json传递,然后每个请求只需要用户的令牌(apikey)。