我的ASP.NET核心网络应用程序被部署为,我遇到了CORS的麻烦。前端部署为不同的应用程序服务。当我试图从前端访问Api时,我会得到以下错误。
加载https://chatclassifier.azurewebsites.net/chatcontroller/getchatData失败:对飞行前请求的响应没有通过访问控制检查:响应中的“访问控制-允许-凭据”标题的值为“”,当请求的凭据模式为“包括”时,该值必须为“true”。因此,“https://chatclassifierangularfrontend20180924084838.azurewebsites.net”源是不允许访问的。由XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。
我正在使用一些cookie在客户端和服务器之间传递数据。
我在ASP.NET Core中设置了更多的CORS策略,如Setup.cs中所示
配置服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAllHeaders",
builder =>
{
builder
.WithOrigins("https://XXXXXXXXXXangularfrontend20180924084838.azurewebsites.net")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.Configure<FormOptions>(x =>
{
x.ValueLengthLimit = int.MaxValue;
x.MultipartBodyLengthLimit = int.MaxValue;
});
}配置:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var cookiePolicyOptions = new CookiePolicyOptions
{
Secure = CookieSecurePolicy.SameAsRequest,
MinimumSameSitePolicy = SameSiteMode.None
};
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
}
app.UseCors("AllowAllHeaders");
app.UseCookiePolicy(cookiePolicyOptions);
app.UseHttpsRedirection();
app.UseMiddleware(typeof(ApiExceptionHandling));
app.UseMvc();
}在我的API代码中,我没有在任何其他地方添加任何其他CORS相关代码。我尝试将CORS "AllowAllHeaders“属性添加到我的控制器中,但这也不起作用。
此外,我还在CORS下的Azure中添加了以下代码到我的web应用程序配置中。

显然,我已经更改了URL名称,包括XXXXXX,并确保它们在我的Azure Portal和Web应用程序代码中都是相同的。
任何帮助都将不胜感激!
发布于 2018-11-03 18:28:12
您不应该将配置与代码中的配置组合在一起。如果您在应用程序服务上启用CORS,您的CORS配置基本上在代码中被忽略。
这是由于App拦截了选项请求。
https://stackoverflow.com/questions/52861692
复制相似问题