2015-10-19 121 views
0

我目前使用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(); 
}); 
+0

我面临同样的问题!你能找到解决办法吗? –

回答

0

你不能像头USERNAMEPASSWORD

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

mozilla's doc about HTTP headers

顺便说一句,通常如果你使用基于token(apikey)的认证,你不需要用户名和密码作为头。只需传递一次即可认证用户。你也可以将参数作为json传递,然后每个请求只需要用户的令牌(apikey)。