如何验证所有(JavaScript)AJAX请求?(发送到Node.js)
我有一个web应用程序,它有数百个HTTP请求。所有请求都会转到我构建的Node.js API 我希望能够确保Node.js只响应经过身份验证的请求 问题是:我不想去更新JavaScript代码中的每个AJAX请求,以包含发送到服务器的用户名和密码。我开始寻找解决方案,我发现:如何验证所有(JavaScript)AJAX请求?(发送到Node.js),javascript,jquery,node.js,ajax,http,Javascript,Jquery,Node.js,Ajax,Http,我有一个web应用程序,它有数百个HTTP请求。所有请求都会转到我构建的Node.js API 我希望能够确保Node.js只响应经过身份验证的请求 问题是:我不想去更新JavaScript代码中的每个AJAX请求,以包含发送到服务器的用户名和密码。我开始寻找解决方案,我发现: $.ajaxSetup({ }); ajaxSetup允许我为将来的Ajax请求设置默认值 我一直想知道如何在所有请求中包含用户名和密码,然后在Node.js服务器上读取用户名和密码 这就是我所尝试的: $.ajaxS
$.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' }
我希望能够看到我的自定义头,这样我就可以用它来验证请求。但是什么都没有。我不确定我做错了什么 无论是通过授权头,您都可以通过请求头传递base 64编码的例如:authorization:bxfd2232sd 或 发送的最佳方式是使用会话\ 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'})
}
}
您需要在允许标题部分添加自定义标题键,如
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, user, pass");
首先,您必须将
user
和pass
添加到accesscontrolallow头文件中。大多数人只使用用户和密码base64编码的标题,例如Authorization:Basic bXlVc2VyOm15UGFzcwo=
Ok,cool。我试过使用授权。。但是console.log(req.headers[authorization])返回未定义的。好吧,它将是req.headers.authorization
或req.headers['authorization']
,并且您还需要将authorization
添加到访问控制允许头
响应头我尝试使用授权。。但是console.log(req.headers[authorization])返回未定义的。您在服务器中启用了授权头吗