我有一个Web应用程序,它有数百个HTTP请求。所有请求都转到我构建的Node.js API。
我希望能够确保Node.js仅响应经过身份验证的请求。
这就是问题所在:我不想在我的JavaScript代码中更新每个AJAX请求,以包含用于发送到服务器的用户名和密码。我开始寻找解决方案,我发现了这个:
$.ajaxSetup({ });
ajaxSetup允许我为将来的Ajax请求设置默认值。
我被困在如何在所有请求中包含用户名和密码,然后在Node.js服务器上读取用户名和密码?
这就是我的尝试:
$.ajaxSetup({
header: {user:'myUser', pass:'myPass'};
});
在服务器上:
http.createServer(function (req, resp) {
resp.setHeader('Access-Control-Allow-Credentials', true);
resp.setHeader('Access-Control-Allow-Origin', '*');
resp.setHeader('Access-Control-Request-Method', '*');
resp.setHeader('Access-Control-Allow-Methods', '*');
resp.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
console.log(req.headers);
........
.......
rest of code....
这是记录的内容:
{ host: 'localhost:9000',
connection: 'keep-alive',
accept: '*/*',
origin: 'http://localhost',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.132 Safari/537.36',
referer: 'http://localhost/skynet/app/skynet.php
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9' }
我希望能够看到我的自定义标题,因此我可以使用它来验证请求。但没有什么。我不确定我做错了什么。
答案 0 :(得分:1)
您需要在允许标题部分添加自定义标题键,例如
foo-bar.jar
答案 1 :(得分:0)
通过授权标头,您只需通过您的请求标头传递基数为64的编码例如:授权:bXfD23232sd 要么 最好的发送方式,使用session_id(如果它是JWT令牌,那么它可能会给你更安全的层)并通过创建中间件在你的节点服务器中验证,让我们将其命名为authMiddleware
authMiddleware(){
checkifJwtValid() {
//if yes then to your controller or business logic
//else return res.status(403).json({'err':true, 'msg':'User unauthorized'})
}
}