Хотя другой ответ верен, если вы, однако, хотите определить конкретные разрешенные источники (и вы должны это сделать), вам следует удалить .AllowAnyOrigin()
или SetIsOriginAllowed((host) => true)
из вашего оператора CORS, и он будет работать с .AllowCredentials()
.
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins("http://localhost:4200")
.AllowCredentials()
.Build());
});
И если вы хотите разрешить множественные источники, вы можете установить массив источников и использовать его в качестве параметра в .WithOrigins()
.Например:
private readonly string[] MyAllowedOrigins = new string[] {
"http://localhost:4200",
"http://localhost:3000"
};
...
.WithOrigins(MyAllowedOrigins)
...
Также обратите внимание на используемую схему - проверьте, является ли она http
или https
.
Ради полноты, никогда не забывайте добавлять, например, app.UseCors("CorsPolicy");
где вы конфигурируете свой конвейер, например, метод .Configure
в классе Startup
.
В целом - хотя в некоторых случаях допускается любое разрешение на любое происхождение, вы обычно хотите и должны определитьв частности, разрешено происхождение.
Относительно SetIsOriginAllowed((host) => true)
- это должно быть выражение для оценки того, должен ли быть разрешен источник, поэтому возвращение => true
всегда может подойти для dev.насколько я могу судить, не должен использоваться в производственной среде.
Вы можете найти хорошее чтение в MS Docs.Оформить заказ: