【发布时间】:2019-06-14 20:09:09
【问题描述】:
我有一个可以很好地处理 CORS 的 .NET Core 2.1 应用程序。但是升级到 2.2 后我遇到了问题:
从源“https://cabinet.xxxx”访问“https://content.xxxx/user/avatar”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源上。
响应标头:(这可能是 IIS 的问题吗?)
连接:关闭
内容长度:315
内容类型:文本/html; charset=us-ascii
日期:格林威治标准时间 2019 年 1 月 22 日星期二 15:08:26
服务器:Microsoft-HTTPAPI/2.0
我尝试了在这里可以找到的所有组合(在 MVC 之前和之后启用 CORS,在 Configure 方法中添加和删除 UseCors),但没有任何效果。
public IServiceProvider ConfigureServices(IServiceCollection services)
{
...
services.AddCors(options =>
{
options.AddPolicy("MyPolicy",
builder => builder.WithOrigins("https://cabinet.xxxxxx")
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyHeader());
});
services.AddMvc();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHsts();
//app.UseHttpsRedirection();
app.UseCors("MyPolicy");
app.UseMvc();
app.UseDefaultFiles();
app.UseStaticFiles();
}
方法是
[HttpPost]
[EnableCors("MyPolicy")]
[Route("user/avatar")]
[Authorize]
public async Task Method(IFormFile file) {...}
我错过了什么吗?我不想降级回 2.1。
【问题讨论】:
-
截图解释了问题和如何解决它。 CORS 已启用并抱怨尝试访问第三方 URL。显示可以调用
content....../user/avatar的标头不见了。 -
好吧,我不太明白。我试过'AllowAnyOrigin()'但它也没有帮助。还是您的意思是我应该将呼叫更改为“内容”服务器?我只做后端,我应该改变调用并添加特定的标题吗?
-
顺便说一句,发布错误消息本身,而不是错误消息的图片。谷歌搜索标题名称和
.net core将返回相关答案。现在我必须手动输入才能搜索示例 -
您应该检查如何正确配置它,而不是尝试关闭 CORS。您正在寻找一种将
content...URL 放入该标头的方法。而且我仍然需要手动输入才能搜索样本 -
毫无疑问这是 ASP.NET Core 2.2 的一个严重问题。解决方法在某些阶段有效,而在其他阶段无效;部署中的大问题。一场噩梦
标签: c# cors asp.net-core-webapi asp.net-core-2.2