我将ASP.NET Core Web应用程序部署为Azure应用程序服务时遇到了CORS问题。前端被部署为其他应用程序服务。当我尝试从前端访问Api时,出现以下错误。
无法加载 https://chatclassifier.azurewebsites.net/chatcontroller/getchatData: 对预检请求的响应未通过访问控制检查: 响应中“ Access-Control-Allow-Credentials”标头的值 为”,当请求的凭据模式为时,必须为“ true” '包括'。起源 'https://chatclassifierangularfrontend20180924084838.azurewebsites.net' 因此,不允许访问。请求的凭证模式 XMLHttpRequest发起的操作由withCredentials控制 属性。
我正在使用一些cookie在客户端和服务器之间传递数据。
我已经在Setup.cs中按如下方式在ASP.NET Core中设置了更多CORS策略
配置服务:
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门户和Web应用程序代码中它们都相同。
任何帮助将不胜感激!
答案 0 :(得分:2)
您不应将Azure App Service CORS配置与代码中的config结合使用。如果您在应用程序服务上启用CORS,则您的CORS配置在代码中基本上会被忽略。
这是由于App Service拦截了OPTIONS请求。