如何验证所有(JavaScript)AJAX请求?(发送到Node.js)

如何验证所有(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

我有一个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' }

我希望能够看到我的自定义头,这样我就可以用它来验证请求。但是什么都没有。我不确定我做错了什么

无论是通过授权头,您都可以通过请求头传递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])返回未定义的。您在服务器中启用了授权头吗