如何在快速应用程序上正确发送重定向到 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,但不会重定向到组件并显示数据?