如何在快速应用程序上正确发送重定向到 URL

Posted

技术标签:

【中文标题】如何在快速应用程序上正确发送重定向到 URL【英文标题】:How to properly send redirect to URL on express app 【发布时间】: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 【参考方案1】:

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

【讨论】:

以上是关于如何在快速应用程序上正确发送重定向到 URL的主要内容,如果未能解决你的问题,请参考以下文章

使用路由器链接进行路由时,它会正确创建 URL,但不会重定向到组件并显示数据?

在webview中完成工作后如何重定向到页面?

如何使用js 重定向到原来的页面

如何在 Django 中重定向到不同的 URL?

[Android ]如何在 Android 应用上获取重定向 url

将命令行进程的标准输出重定向到文件