Я пытаюсь обслуживать свои активы на поддомене, установленном в том же домене. Поэтому, когда моим основным доменом является https://localhost:44111/
, URL-адрес ресурса будет выглядеть примерно так: https://assets.localhost:44111/css/style.css
. Файл style.css
запрашивает включение пользовательского шрифта my_custom_font.eot
, например,
@font-face {
....
src: url('/css/fonts/my_custom_font.eot?123');
}
Когда я включаю файл style.css
, который находится на поддомене активов, я получаю следующую ошибку
Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса на https://assets.localhost:44111/css/fonts/my_custom_font.eot?123. (причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').
Чтобы убедиться, что я свободен, оба style.css
и my_custom_font.eot
расположены на одном и том жедомен assets.localhost:44111
. Запрос на включение style.css
работает без проблем. Но когда style.css
делает запрос на включение my_custom_font.eot
, запрос запрещается.
Я пытался следовать документации , чтобы включить CORS. Я добавил следующий код в метод Startup.ConfigureServices(IServiceCollection services)
services.AddCors(options =>
{
options.AddPolicy("AllowSubDomainTraffic",
builder =>
{
builder.WithOrigins("https://assets.localhost:44111")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
Затем в методе Startup.Configure(IApplicationBuilder app, IHostingEnvironment env)
я добавил следующий
app.UseCors("AllowSubDomainTraffic");
Однако я все еще получаю CORS header ‘Access-Control-Allow-Origin’ missing
ошибка в консоли браузера.
Так я реагирую на субдомены в моем приложении
app.MapWhen(context => {
return context.Request.Host.Value.StartsWith("assets.", StringComparison.OrdinalIgnoreCase)
} (appBuilder) =>
{
appBuilder.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider("C:/assets"),
});
});
Как правильно включить CORS для субдомена?