Javascript 如何在nodejs中请求页面时设置标题?
我看过很多关于jwt身份验证的教程,但是每个视频制作人都使用Postman来显示发生了什么,他们在headers部分传递标题,同时在Postman中请求URL。我试着用JavaScript来做,但没能做到 我想进行jwt身份验证,但在生成令牌之后,我将其发送到客户端以用于进一步的请求,但在尝试了几次之后,我没有这样做。我还尝试在服务器端设置req.headers,但它没有达到我想要的效果 我想为令牌生成后的每个请求设置“Bearer{token}”形式的身份验证请求头。如何使用JS来实现它 我最担心的是,每个教程都是用postman实现的,但他们没有展示如何在自己的应用程序中实现它。我希望我的问题很清楚。类似这样的问题: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来实现它 我最
$.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从前端设置它