Javascript 为什么React应用程序没有';是否保持nodejs服务器登录会话?
你好。 我的NodeJS服务器是: app.jsJavascript 为什么React应用程序没有';是否保持nodejs服务器登录会话?,javascript,node.js,reactjs,axios,saml-2.0,Javascript,Node.js,Reactjs,Axios,Saml 2.0,你好。 我的NodeJS服务器是: app.js “严格使用”; const http=require('http'); const express=require('express'); const session=require('express-session'); 常量pino=需要('pino'); const pinoHttp=require('pino-http'); const passport=require('./config/passport'); const httpE
“严格使用”;
const http=require('http');
const express=require('express');
const session=require('express-session');
常量pino=需要('pino');
const pinoHttp=require('pino-http');
const passport=require('./config/passport');
const httpErrors=require('http-errors');
module.exports=主功能(选项,cb){
//设置默认选项
const ready=cb | | function(){};
const opts=Object.assign(
{
//默认选项
},
选择权
);
常数记录器=引脚();
//服务器状态
让服务器;
让serverStarted=false;
设serverClosing=false;
//设置错误处理
函数未处理错误(err){
//记录错误
记录器错误(err);
//只清理一次
如果(服务器关闭){
返回;
}
serverClosing=true;
//如果服务器已启动,请将其关闭
如果(服务器已启动){
server.close(函数(){
过程。退出(1);
});
}
}
进程.on('uncaughtException',未处理的错误);
进程.on('unhandledRejection',unhandledError);
//创建express应用程序
常量app=express();
//通用中间件
app.use(pinoHttp({logger}));
应用程序使用(会话)({
resave:false,
秘密:“超级秘密密码”,
saveUninitialized:true
}));
app.use(passport.initialize());
app.use(passport.session());
use(express.urlencoded({extended:false}));
使用(express.json());
要求(“./路线”)(应用程序、选项);
应用程序使用(函数FourHandler(req、res、next){
接下来(httpErrors(404,`Route not found:${req.url}`));
});
应用程序使用(函数FiveHundHandler(err、req、res、next){
如果(错误状态>=500){
记录器错误(err);
}
res.status(err.status | | 500).json({
信息:[
{
代码:err.code | |“InternalServerError”,
消息:err.message
}
]
});
});
server=http.createServer(app);
监听服务器(8080);
};代码>尝试在应用程序之前设置express会话。使用(passport.initialize())如下所示:
app.use(
session({
name: "cookie-name",
resave: true,
proxy: true,
secret: 'secret',
saveUninitialized: true,
cookie: {
secure: true,
sameSite: "none"
}
})
);
app.use(passport.initialize())
app.use(passport.session());
浏览器现在阻止未配置samesite的Cookie,因为默认值为“lax”,它强制在同一域中执行Cookie,因此,您必须将samesite配置为“无”,以允许从跨站点域执行Cookie
sameSite改为“无”以允许跨站点
安全为真
代理以允许“X-Forwarded-Proto”标头
更多信息:有趣。我不知道!我将检验你的建议。我目前使用的是勇敢的浏览器。