缺少一些响应标头

时间:2015-10-19 07:34:36

标签: node.js mongoose

我目前正在使用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-headerscontent-typeconnection和其他人。我已经在我的应用程序中设置了标题。

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();
});

1 个答案:

答案 0 :(得分:0)

您无法获得USERNAMEPASSWORD等标题。

您应该使用X-前缀定义自定义标头。 将X-前缀添加到您想要获得的标头的自定义标头中。

mozilla's doc about HTTP headers

BTW,通常如果您使用基于令牌(apikey)的身份验证,则不需要用户名和密码作为标头。只需传递一次即可验证用户身份。您也可以将这些参数作为json传递,然后每个请求只需要用户的令牌(apikey)。