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

时间:2018-02-22 23:35:38

标签: javascript jquery node.js ajax http

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

我希望能够看到我的自定义标题,因此我可以使用它来验证请求。但没有什么。我不确定我做错了什么。

2 个答案:

答案 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'})
    }
}