栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Express和Node,如何在子域/主机头之间维护会话

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Express和Node,如何在子域/主机头之间维护会话

首先,要允许浏览器发出跨域请求,您需要在服务器端设置标头。该解决方案适用于普通请求以及AJAX。在您的快速配置功能中:

Express 4.0

var express = require('express');var session = require('express-session');var cookieParser = require('cookie-parser');var app = express();app.use(cookieParser());app.use(session({    secret: 'yoursecret',    cookie: {        path: '/',        domain: 'yourdomain.com',        maxAge: 1000 * 60 * 24 // 24 hours    }}));app.use(function(req, res, next) {    res.header('Access-Control-Allow-Credentials', true);    res.header('Access-Control-Allow-Origin', req.headers.origin);    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');    res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');    next();});

如果不需要跨域cookie交换所需的会话,则可以将Access-Control-Allow-Origin设置为“
*”。要使cookie和会话跨域共享,您需要将特定的Access-Control-Allow-
Origin设置为发出请求的实际域,这就是req.headers.origin的原因-非常适合。

使用domain不能在localhost上正常工作-因此请确保在开发环境中将其禁用,并在生产环境中启用。它将启用跨顶级域和子域的共享cookie。

这还不是全部。它本身的浏览器不会通过跨域请求发送cookie,因此必须强制这样做。在jQuery中,您可以在$ .ajax()请求中添加额外的参数:

xhrFields: { withCredentials: true }

对于非jQuery,只需具有XHR构造函数并设置以下参数:

xhr.withCredentials = true;

您就可以使用共享会话进行跨域了。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号