ajax - node.js 表达 ajax session

标签 ajax node.js

我在使用 express 和 ajax session 时遇到问题。我的应用程序通过 Ajax(POST 和 GET)接收请求并设置 session 变量。如果请求不是来自 ajax,则 session 可以正常工作,但在相反的情况下,它们就不起作用。例如:

if (typeof req.session.id == 'undefined'){
req.session.id = 1;

else {
req.session.id++;
 } 
res.send({session:req.session.id});

现在当我执行 localhost:3000/时一切正常,它每次都会增加。如果我通过 $http 从 angular 执行相同的操作,我会一直得到 1。我在 PHP 中尝试了相同的操作,以防 angular 出现问题,但它工作得很好。请注意,ajax 调用来自 localhost:80

我的快速设置:

app.use(express.bodyParser());
app.use(express.cookieParser('secret'));
app.use(express.cookieSession({secret:'mySecret'}));
app.use(express.session({store:new express.session.MemoryStore(),maxAge : new Date(Date.now() + 3600000)}));
app.use(app.router)

编辑

通过执行 console.log(req);我注意到当不是来自 AJAX 时我得到:

 cookies:

{ PHPSESSID: 'jm2p2kn7etmofrp48s8sv4pu47', ZDEDebuggerPresent: 'php', '': 'phtml', user_admin: 'MTUzOnJvb3Q6U2ptaHJpZmllaG8=', 'connect.sess': 's:j:{"id":7}.oIAoC356/z4fQ++iH44N7YxWZWEP49bTHp1h/gpAElY'

但是当来自 AJAX 时,我得到了{}

最佳答案

在 node.js 上:

res.header('Access-Control-Allow-Credentials', 'true');

在 Ajax 上:

xhr.withCredentials = true;

关于ajax - node.js 表达 ajax session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417226/

相关文章:

jquery - 如何通过ajax将项目ID发送到服务器: jquery sortable

javascript - 输入类型 ="file"设置base64图像数据

javascript - Angular 4路由器返回未定义

node.js - 浏览器化和 bower 。规范方法

node.js - 删除 dynamodb 中的嵌套属性

javascript - JSON 文件中包含键值对的数组索引

asp.net - 有关从 ASP.NET MVC 应用程序播放声音文件的建议

javascript - ReactJS:如何最好地处理新创建对象的 JSON 响应

windows - Node console.log 行为和 Windows 标准输出

node.js - 如何解决 gitbook-cli 超过最大调用堆栈大小错误?