【问题标题】:How to properly send redirect to URL on express app如何在快速应用程序上正确发送重定向到 URL
【发布时间】:2018-01-22 08:08:29
【问题描述】:

我几天来一直在尝试在我的应用程序中发送有效的重定向请求。 应该发生什么: 如果我尝试执行需要我登录的操作,我的快速应用程序应重定向到登录 URL。

router.use(function(req,res,next){
    if(req.session.user == null){
        res.redirect('http://localhost:4200/#/login');
    }
    else
        next();
});

我的 CORS 实现:

var corsOptions = {
  origin:  process.env.ctxCliente,
  credentials: true
}
app.use(cors(corsOptions));

错误:

XMLHttpRequest 无法加载 http://localhost:4200/#/login。回应 预检请求未通过访问控制检查: 响应中的“Access-Control-Allow-Origin”标头不能是 当请求的凭据模式为“包含”时,通配符“*”。起源 'null' 因此不允许访问。凭证模式 XMLHttpRequest 发起的请求由 withCredentials 属性。

在我的 Angular 应用程序上,我发送所有请求的 {withCredentials: true},因为我需要使用 cookie 来验证用户会话 ID

【问题讨论】:

  • 如果所有这些都发生在您的应用程序中,那么为什么这是一个跨域请求?
  • @CBroe 我的 express 应用在 3000 端口,我的 Angular 应用在​​ 4200 端口
  • 嗯,错误消息告诉你什么是错误的——在这种情况下,你需要发送一个更具体的Access-Control-Allow-Origin响应预检请求,而不仅仅是*
  • 在我的 corsOptions 中指定了原点。 process.env.ctxCliente 是 'localhost:4200'
  • 尝试在corsOptions中使用origin: true

标签: node.js http express redirect cors


【解决方案1】:

经过反复试验,我解决了这个问题: Angular 应该拦截 https 请求并检查重定向。 以下是拦截器的实现方式: https://angular.io/guide/http#intercepting-all-requests-or-responses

【讨论】:

    猜你喜欢
    • 2021-01-13
    • 2020-09-28
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2017-11-24
    • 2015-04-25
    相关资源
    最近更新 更多