Javascript 如何在nodejs中请求页面时设置标题?

Javascript 如何在nodejs中请求页面时设置标题?,javascript,node.js,authentication,jwt,request-headers,Javascript,Node.js,Authentication,Jwt,Request Headers,我看过很多关于jwt身份验证的教程,但是每个视频制作人都使用Postman来显示发生了什么,他们在headers部分传递标题,同时在Postman中请求URL。我试着用JavaScript来做,但没能做到 我想进行jwt身份验证,但在生成令牌之后,我将其发送到客户端以用于进一步的请求,但在尝试了几次之后,我没有这样做。我还尝试在服务器端设置req.headers,但它没有达到我想要的效果 我想为令牌生成后的每个请求设置“Bearer{token}”形式的身份验证请求头。如何使用JS来实现它 我最

我看过很多关于jwt身份验证的教程,但是每个视频制作人都使用Postman来显示发生了什么,他们在headers部分传递标题,同时在Postman中请求URL。我试着用JavaScript来做,但没能做到

我想进行jwt身份验证,但在生成令牌之后,我将其发送到客户端以用于进一步的请求,但在尝试了几次之后,我没有这样做。我还尝试在服务器端设置req.headers,但它没有达到我想要的效果

我想为令牌生成后的每个请求设置“Bearer{token}”形式的身份验证请求头。如何使用JS来实现它

我最担心的是,每个教程都是用postman实现的,但他们没有展示如何在自己的应用程序中实现它。我希望我的问题很清楚。

类似这样的问题:

$.ajax({
  url: url,
  beforeSend: function(xhr) {
    xhr.setRequestHeader("custom_header", "value");
  },
  success: function(data) {
  }
});
诸如此类:

$.ajax({
  url: url,
  beforeSend: function(xhr) {
    xhr.setRequestHeader("custom_header", "value");
  },
  success: function(data) {
  }
});

您可以像这样轻松地在http请求上添加头


这里已经解决了这个问题

您可以像这样轻松地在http请求上添加头


这里已经解决了这个问题

首先使用npm安装jwt和express framework,然后制作一个中间件文件,该文件将检查是否设置了托克

Middleware.js:

let jwt = require('jsonwebtoken');
const config = require('./config.js');

let checkToken = (req, res, next) => {
    let token = req.headers['authorization']; // Express headers are auto converted to lowercase

    if (token) {
        if (token.startsWith('Bearer ')) {  // Checks if it contains Bearer
            // Remove Bearer from string
            token = token.slice(7, token.length); //Separate Bearer and get token
        }

        jwt.verify(token, config.secret, (err, decoded) => {  //Inser the token and verify it.
            if (err) {
                return res.json({
                    status: false,
                    message: 'Token is not valid'
                });
            } else {
                req.decoded = decoded;
                next();
            }
        });
    } else {
        return res.json({
            status: false,
            message: 'Access denied! No token provided.'
        });
    }
};
const middleware = require('./middleware');
const jwt = require("jsonwebtoken");
const config = require('./config.js');

//Call token Route
app.use('/token', (req, res, next) => {

    //Generate Token
    let token = jwt.sign({ username: "test" },
        config.secret,
        {
            expiresIn: '1h' // expires in 1 hours
        }
    );

    //Send Token
    res.json({
        success: true,
        message: 'Authentication successful!',
        token: token
    });

});

//Add Authentication to all routes
app.use(middleware.checkToken);

//===> All the routes after middleware will be checked for token

app.use('/getUser', (req, res, next) => {; 
 console.log('do something')
});
接下来,创建一个包含机密的配置文件

配置js:

module.exports = {
    secret: 'worldisfullofdevelopers'
};
最后,创建一个令牌路由,该路由将创建您的令牌,之后,其余的调用将针对该令牌进行身份验证

Index.js:

let jwt = require('jsonwebtoken');
const config = require('./config.js');

let checkToken = (req, res, next) => {
    let token = req.headers['authorization']; // Express headers are auto converted to lowercase

    if (token) {
        if (token.startsWith('Bearer ')) {  // Checks if it contains Bearer
            // Remove Bearer from string
            token = token.slice(7, token.length); //Separate Bearer and get token
        }

        jwt.verify(token, config.secret, (err, decoded) => {  //Inser the token and verify it.
            if (err) {
                return res.json({
                    status: false,
                    message: 'Token is not valid'
                });
            } else {
                req.decoded = decoded;
                next();
            }
        });
    } else {
        return res.json({
            status: false,
            message: 'Access denied! No token provided.'
        });
    }
};
const middleware = require('./middleware');
const jwt = require("jsonwebtoken");
const config = require('./config.js');

//Call token Route
app.use('/token', (req, res, next) => {

    //Generate Token
    let token = jwt.sign({ username: "test" },
        config.secret,
        {
            expiresIn: '1h' // expires in 1 hours
        }
    );

    //Send Token
    res.json({
        success: true,
        message: 'Authentication successful!',
        token: token
    });

});

//Add Authentication to all routes
app.use(middleware.checkToken);

//===> All the routes after middleware will be checked for token

app.use('/getUser', (req, res, next) => {; 
 console.log('do something')
});

首先使用npm安装jwt和express framework,然后制作一个中间件文件,该文件将检查是否设置了托克

Middleware.js:

let jwt = require('jsonwebtoken');
const config = require('./config.js');

let checkToken = (req, res, next) => {
    let token = req.headers['authorization']; // Express headers are auto converted to lowercase

    if (token) {
        if (token.startsWith('Bearer ')) {  // Checks if it contains Bearer
            // Remove Bearer from string
            token = token.slice(7, token.length); //Separate Bearer and get token
        }

        jwt.verify(token, config.secret, (err, decoded) => {  //Inser the token and verify it.
            if (err) {
                return res.json({
                    status: false,
                    message: 'Token is not valid'
                });
            } else {
                req.decoded = decoded;
                next();
            }
        });
    } else {
        return res.json({
            status: false,
            message: 'Access denied! No token provided.'
        });
    }
};
const middleware = require('./middleware');
const jwt = require("jsonwebtoken");
const config = require('./config.js');

//Call token Route
app.use('/token', (req, res, next) => {

    //Generate Token
    let token = jwt.sign({ username: "test" },
        config.secret,
        {
            expiresIn: '1h' // expires in 1 hours
        }
    );

    //Send Token
    res.json({
        success: true,
        message: 'Authentication successful!',
        token: token
    });

});

//Add Authentication to all routes
app.use(middleware.checkToken);

//===> All the routes after middleware will be checked for token

app.use('/getUser', (req, res, next) => {; 
 console.log('do something')
});
接下来,创建一个包含机密的配置文件

配置js:

module.exports = {
    secret: 'worldisfullofdevelopers'
};
最后,创建一个令牌路由,该路由将创建您的令牌,之后,其余的调用将针对该令牌进行身份验证

Index.js:

let jwt = require('jsonwebtoken');
const config = require('./config.js');

let checkToken = (req, res, next) => {
    let token = req.headers['authorization']; // Express headers are auto converted to lowercase

    if (token) {
        if (token.startsWith('Bearer ')) {  // Checks if it contains Bearer
            // Remove Bearer from string
            token = token.slice(7, token.length); //Separate Bearer and get token
        }

        jwt.verify(token, config.secret, (err, decoded) => {  //Inser the token and verify it.
            if (err) {
                return res.json({
                    status: false,
                    message: 'Token is not valid'
                });
            } else {
                req.decoded = decoded;
                next();
            }
        });
    } else {
        return res.json({
            status: false,
            message: 'Access denied! No token provided.'
        });
    }
};
const middleware = require('./middleware');
const jwt = require("jsonwebtoken");
const config = require('./config.js');

//Call token Route
app.use('/token', (req, res, next) => {

    //Generate Token
    let token = jwt.sign({ username: "test" },
        config.secret,
        {
            expiresIn: '1h' // expires in 1 hours
        }
    );

    //Send Token
    res.json({
        success: true,
        message: 'Authentication successful!',
        token: token
    });

});

//Add Authentication to all routes
app.use(middleware.checkToken);

//===> All the routes after middleware will be checked for token

app.use('/getUser', (req, res, next) => {; 
 console.log('do something')
});
在香草nodejs中:

consturi=”http://example.com";
常量选项={
标题:{
“授权”:“持票人…”
}
}
//需要http/https库
let req=require(“http”)。请求(uri,选项,(res)=>{
常量块=[];
res.on(“数据”,函数(块){
推(chunk);
});
res.once(“结束”,()=>{
//海螺体块
让body=Buffer.concat(块);
console.log(body.toString());
});
});
请求开启(“错误”,(错误)=>{
控制台日志(err);
});
请求结束()

consturi=”http://example.com";
常量选项={
标题:{
“授权”:“持票人…”
}
}
//需要http/https库
let req=require(“http”)。请求(uri,选项,(res)=>{
常量块=[];
res.on(“数据”,函数(块){
推(chunk);
});
res.once(“结束”,()=>{
//海螺体块
让body=Buffer.concat(块);
console.log(body.toString());
});
});
请求开启(“错误”,(错误)=>{
控制台日志(err);
});

请求结束()如果我理解正确,您希望在客户端上设置HTTP头,以便将身份验证令牌传递给服务器。我建议您使用像**axios*这样的库

使用axios,收到toke后,使用以下代码行为每个传出通信设置标头:

axios.defaults.headers.common['Authorization'] = "Bearer " + token;

这会将身份验证http头设置为您需要的格式。

如果我理解正确,您希望在客户端上设置http头,以便将身份验证令牌传递给服务器。我建议您使用像**axios*这样的库

使用axios,收到toke后,使用以下代码行为每个传出通信设置标头:

axios.defaults.headers.common['Authorization'] = "Bearer " + token;


这将把身份验证http头设置为您需要的表单。

1)使用jQuery而不是普通JS,2)OP ASQUED针对节点1)使用jQuery而不是普通JS,2)OP ASQUED specific for Nodeear是否尝试发出http请求或希望在使用JWTs的服务器上保护路由?是否确实要发送头以访问安全路由是否尝试发出http请求或希望在使用JWTs的服务器上保护路由?是否确实要发送头以访问安全路由Fetch在nodejsI中不存在希望在请求时通过客户端发送头..因此fetch始终是一个optionfetch在节点中不存在我希望在请求时通过客户端发送头..因此fetch始终是一个Option在生成令牌后尝试执行此操作,但在再次发出请求时无法看到头..我在生成令牌后尝试执行此操作但是当再次发出请求时,无法看到头。您如何使用生成的令牌(您在json中响应的令牌)设置头授权?您的前端框架是什么?或者你想用后端设置它吗?Nodejs在该项目中使用vanilla JS,特别是你可以用Ajax从前端设置它。你是如何用生成的令牌(用json响应)设置头授权的?你的前端框架是什么?或者你想用后端设置它吗?Nodejs在那个项目中使用了vanilla JS,特别是你可以用ajax从前端设置它