如何在 NodeJS 中实现带有子域的 csrf
Posted
技术标签:
【中文标题】如何在 NodeJS 中实现带有子域的 csrf【英文标题】:How to implement csrf with subdomains in NodeJS 【发布时间】:2021-01-01 03:08:48 【问题描述】:const csrfProtection = csrf(
cookie:
domain: '.' + config_web.domain,
secure: true,
httpOnly: true,
//sameSite: 'none'
,
);
app.use(expresssession(
store: new RedisStore( client: redisClient ),
secret: 'keyboard cat',
resave: false,
saveUninitialized: false,
cookie:
domain: '.' + config_web.domain,
maxAge: parseInt(cookiesTime),
secure: true,
httpOnly: true
));
const corsOptions =
origin: ['https://api.domain.com', 'https://main.domain.com'],
methods: 'POST',
credentials: true,
allowedHeaders: '*',//['Content-Type', 'Authorization', 'X-Requested-With'],
optionsSuccessStatus: 200
app.use(cors(corsOptions));
我有主站点https://main.domain.com 并将通过https://api.domain.com 调用api。 分离两个子域后,从 csrf 调用 api 总是失败。我想知道我是否设置了错误的任何 cookie 内容?
【问题讨论】:
config_web.domain 的值是?我的意思是它看起来像什么?我猜是domin.com? 【参考方案1】:$.ajax(
url: a_cross_domain_url,
xhrFields:
withCredentials: true
);
刚刚发现在前端添加 xhrFields 然后就可以了
【讨论】:
以上是关于如何在 NodeJS 中实现带有子域的 csrf的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 .htaccess 在 codeigniter 中实现动态子域?
如何使用 express.js 在 Ajax 调用中实现 CSRF 保护(寻找完整示例)?