【发布时间】:2018-01-19 10:20:58
【问题描述】:
尝试将用户重定向到登录页面时,我总是收到此错误:
对预检请求的响应未通过访问控制检查: 响应中“Access-Control-Allow-Origin”标头的值必须 当请求的凭据模式为时,不是通配符“*” '包括'。因此,Origin 'null' 不允许访问。这 XMLHttpRequest 发起的请求的凭证模式是 由 withCredentials 属性控制。
在我的 express 应用程序中,我已经实现了 CORS:
var corsOptions = {
origin: 'http://localhost:4200',
credentials: true
}
app.use(cors(corsOptions));
然后我尝试重定向用户:
router.use(function(req,res,next){
if((req.session.user == null){
res.redirect('http://localhost:4200' + '/login')
}
else
next();
});
在 Angular 4 上,我使用 {withCredentials : true} 发送所有请求,因为我使用的是 cookie;
这些是请求/响应标头:
回复:
访问控制允许凭据:true 访问控制允许来源:http://localhost:4200 连接:保持活动日期:2017 年 8 月 10 日星期四 12:09:55 GMT 地点:http://localhost:4200/login 设置cookie:semanaintegrada.session=s%3A6nieAv1pfn2V-2x7H4HbnqJFbYsgJmwy.hO1QKm%2Fgm6Kmso8pLCQ5zrZAVNhIYgfr%2BgzOB0oI9UA; 路径=/;过期=2017 年 8 月 10 日星期四 13:09:55 GMT Transfer-Encoding:chunked Vary:Origin X-Powered-By:Express
请求:
Accept:application/json, text/plain, / Accept-Encoding:gzip, deflate, br 接受语言:pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4 缓存控制:无缓存连接:保持活动内容长度:39 内容类型:应用程序/json Cookie:semanaintegrada.session=s%3AwuiVwYs3Ahs4dfLULfpqMBcrnbthY7sZ.OYZk%2FCnZGHAe8v1T8nWpbAdFQVsXjUFAQxnYI27%2FZlE 主机:localhost:3000 来源:http://localhost:4200 Pragma:no-cache 引用者:http://localhost:4200/ User-Agent:Mozilla/5.0 (Windows NT 10.0; WIN64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
此外,在 Chrome 中创建了 4 个请求(我不知道为什么)。 3 到我的快递应用 和 1 到 localhost:4200 最后一个有 Access-Control-Allow-Origin:* 和 Origin null 这有关系吗?
【问题讨论】:
标签: node.js express redirect routing cors