У меня есть веб-API publi c analytics (. Net Core 3.1), который собирает основную c аналитику из моих различных веб-приложений и сайтов (просмотры страниц и т. Д. c). Я бы очень хотел настроить cors более строго, так как мне хорошо известно, откуда должен поступать трафик c. Стоит отметить, что я обновляю это приложение с .Net Core 2.2
до .Net Core 3.1
.
У меня есть следующий метод в моем Startup.cs
файле
public void ConfigureServices(IServiceCollection services)
{
...
ConfigureCors(services);
}
private void ConfigureCors(IServiceCollection services)
{
// https://weblog.west-wind.com/posts/2016/Sep/26/ASPNET-Core-and-CORS-Gotchas
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.WithOrigins(AppConfiguration.CorsOrigins)
.AllowAnyMethod()
.AllowAnyHeader());
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers().RequireAuthorization();
});
}
AppConfiguration
- это класс, который я использую для обработки конфигураций, и он получает json
значений, используя следующее: public string[] CorsOrigins => _config["CorsOrigins"].Split(',');
В appsettings.Development.json
у меня есть "CorsOrigins": "*"
Я бы очень хотел указать строгое происхождение в файлах appsettings.Production.json
и appsettings.Staging.json
. Например, "CorsOrigins": "https://subdomain.example.com,https://www.example.com,https://example.com"
, но при развертывании я получаю статус 502
всякий раз, когда веб-сайты / приложения достигают различных конечных точек.
"CorsOrigins": "*"
работает на локальном компьютере, поэтому не может быть ничего плохого с * Насколько мне известно, файл 1025 *.
Обновление: "CorsOrigins": "*"
на самом деле не работает для промежуточной или производственной среды. Теперь я еще больше запутался. Для ясности, это cors
вопрос. Следующие параметры работали нормально до обновления до .Net Core 3.1
:
private void ConfigureCors(IServiceCollection services)
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
}
введите описание изображения здесь