#javascript #.net-core #browser #cors #webapi
Вопрос:
У меня есть net framework 4.7.2 FE, в котором я хотел бы использовать новое приложение netcore 5 webapi/SignalR.
На данный момент у меня оба запущены на моей машине с FE в VS2017 под локальным IIS (https://local.redacted.com) и последний в IIS Express VS2019, и оба они подключены с помощью кнопки воспроизведения/отладки.
Я установил cors nuget для netcore и в моем запуске есть следующее:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(c =>
{
c.AddPolicy(
"AllowCCORSOrigin",
options => options.WithOrigins("https://local.redacted.com/")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
services.AddControllers();
services.AddSingleton<KillChecker>();
services.AddHttpContextAccessor();
services.AddSignalR().AddMessagePackProtocol();
services.AddSignalR(
o =>
{
o.EnableDetailedErrors = true;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseFileServer(); //needed?
app.UseStaticFiles();
app.UseRouting();
app.UseCors(builder =>
{
builder
.WithOrigins("https://local.redacted.com/")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<KillHub>("/killhub");
});
}
}
Я также украсил свой контроллер запуска:
[Route("[controller]"), EnableCors()]
public class LaunchController : Controller
Из приложения FE я получаю следующую ошибку CORS при запуске моего JS:
const options = {
method: "POST",
body: JSON.stringify(params),
headers: {
'content-type': "application/json"
}
};
fetch("https://localhost:60907/Launch", options)
.then(response => response.json())
.then(data => console.log(data))
.then(console.log('lift off'));
Доступ для получения по адресу ‘https://localhost:60907/Launch» от происхождения «https://local.redacted.com» заблокирован политикой CORS: Ответ на предполетный запрос не проходит проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок «Доступ-Контроль-Разрешить-Происхождение». Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса на «без cors», чтобы получить ресурс с отключенным CORS.