最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使会话在跨域中正常运行?

IT培训 admin 3浏览 0评论

如何使会话在跨域中正常运行?

我正在使用MEAN堆栈。当我访问角度端口4200上的路径时,它不会允许我访问主页,但是当我从服务器访问端口3000上的路径时,它现在使我可以访问主页。

后端

 // Middleware
        const redirectLogin = ((req, res, next) => {
            if (!req.session.user) { 
                res.status(200).json({ loggedIn: false });
            }
            else 
                next();
        }); 
        // Route
        router.route("/home").get(redirectLogin, (req, res) => {
            Blog.find((err, docs) => {
                if (err)
                console.log(err);
            else
                res.json(docs);
            }); 
        });
          // Where session is created if user logs in successfully
      router.route("/users/login").post((req, res) => {
           // more code here
           res.status(200).json({ loggedIn: true });       
             req.session.regenerate((err) => {
             req.session.user = user.id;   // User holds session
             req.session.save(() => {}); // Session is now saved in db   

        }); 

前端,来自我的服务

 homePage() {
      return this.http.get(`${this.uri}/home`, { withCredentials: true }).subscribe((data) => {
        if (data["loggedIn"] === false)
          this.router.navigate(["/users/login"]);

        else
          this.router.navigate(["/home"]);
      });
    }

我发现更令人困惑的是,当我在端口4200上访问路径/ blog时,它仍将会话保存在数据库中。但这仍然不允许我访问主页。当我在端口3000上访问路径/ blog时,它保存了会话,然后允许访问主页。

router.route("/blog").get((req, res) => {
    req.session.user = 1; // SESSION
});
回答如下:您应该使用npm cors模块。命令行:npm install cors

var express = require('express') var cors = require('cors') var app = express() app.use(cors()); //This line will do the trick

https://www.npmjs/package/cors

如何使会话在跨域中正常运行?

我正在使用MEAN堆栈。当我访问角度端口4200上的路径时,它不会允许我访问主页,但是当我从服务器访问端口3000上的路径时,它现在使我可以访问主页。

后端

 // Middleware
        const redirectLogin = ((req, res, next) => {
            if (!req.session.user) { 
                res.status(200).json({ loggedIn: false });
            }
            else 
                next();
        }); 
        // Route
        router.route("/home").get(redirectLogin, (req, res) => {
            Blog.find((err, docs) => {
                if (err)
                console.log(err);
            else
                res.json(docs);
            }); 
        });
          // Where session is created if user logs in successfully
      router.route("/users/login").post((req, res) => {
           // more code here
           res.status(200).json({ loggedIn: true });       
             req.session.regenerate((err) => {
             req.session.user = user.id;   // User holds session
             req.session.save(() => {}); // Session is now saved in db   

        }); 

前端,来自我的服务

 homePage() {
      return this.http.get(`${this.uri}/home`, { withCredentials: true }).subscribe((data) => {
        if (data["loggedIn"] === false)
          this.router.navigate(["/users/login"]);

        else
          this.router.navigate(["/home"]);
      });
    }

我发现更令人困惑的是,当我在端口4200上访问路径/ blog时,它仍将会话保存在数据库中。但这仍然不允许我访问主页。当我在端口3000上访问路径/ blog时,它保存了会话,然后允许访问主页。

router.route("/blog").get((req, res) => {
    req.session.user = 1; // SESSION
});
回答如下:您应该使用npm cors模块。命令行:npm install cors

var express = require('express') var cors = require('cors') var app = express() app.use(cors()); //This line will do the trick

https://www.npmjs/package/cors
发布评论

评论列表 (0)

  1. 暂无评论