问题描述
我有一个angular + .net core 2.1应用程序。仅使用http时,效果很好,现在我想重定向到https。 但是,每次启动应用程序登录时出现错误
通过以下网址访问位于https://appgee.mycompany.com:5001/的XMLHttpRequest 原产地“ https://app.mysite.com:5001”已被CORS政策阻止: “ Access-Control-Allow-Origin”标头具有一个值 “ https://app.mysite.com:5001”不等于提供的来源
如果我清除浏览器数据,则错误消失了。但这给用户带来不便。 我在.net核心中的代码:
services.AddCors(o => o.AddPolicy("CorsPolicy",builder => {
builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.AllowAnyOrigin();
}));
app.UseHttpsRedirection();
我使用apigee进行身份验证,在角度上,我将apigee的api请求的请求标头设置为(在拦截器中):
SetHeaders: {
Authorization: 'Bearer $ {token.access_token}','Access-Control-Allow-Origin': '*',
您看到我已经在正面和背面都允许原点了。但是为什么会这样呢?
更新:
我拥有的顶点目标端点
<HTTPTargetConnection>
<Properties/>
<URL>http://app.mysite.com:5001</URL>
</HTTPTargetConnection>
解决方法
app.UseCors("CorsPolicy");
根据https://weblog.west-wind.com/posts/2016/sep/26/aspnet-core-and-cors-gotchas
的讨论@Kristian-中间件 order 绝对重要,尽管您可能对,它具有重要的顺序是在Configure()方法中,而不是ConfigureServices()中。为了安全起见,请确保在两个地方的MVC之前都具有CORS定义。现在检查以查看哪一个真正重要,或者根本不重要。一些参考文献明确提到了这一点。
所以我将UseCors放在方法的第一行。