Почему мой источник пуст в asp net core 3, а не в localhost - PullRequest
0 голосов
/ 18 января 2020

У меня возникли проблемы с тем, чтобы мои CORS-запросы работали между asp net core API и Angular 8-приложением с использованием сгенерированного клиента машинописного текста Nswag.

Только сейчас я понял, почему , Мое происхождение "null". Не http://localhost:4200, как я ожидал.

Поэтому, когда я добавил «ноль» в качестве разрешенного источника, все работает. Но я хочу понять, почему и какие последствия это имело бы, если бы я оставил значение «null» в качестве разрешенного источника в производственном процессе.

В настоящее время мой код выглядит следующим образом.

appsettings. json

"CORS-Settings": {
  "Allow-Origins": [
    "http://localhost",
    "http://localhost:4200",
    "https://localhost",
    "https://localhost:4200",
    "null"     // <-- if I remove this my localhost browser gets denied by CORS
  ],
  "Allow-Methods": [ "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE" ]
}

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
   services.AddCors();
   // other stuff
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
{
    var allowedMethods = Configuration.GetSection("CORS-Settings:Allow-Methods").Get<string[]>();
    var allowedOrigins = Configuration.GetSection("CORS-Settings:Allow-Origins").Get<string[]>();

    app.UseCors(
        options => options
        .WithOrigins(allowedOrigins)
        .WithMethods(allowedMethods)
    );
    // other stuff
}

Так почему же мне нужно добавить «ноль» в качестве разрешенного источника, и это вредно, если оно будет сделано в производство?

Если это что-то меняет, я использую firefox v72.0.1.

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Кажется, что заголовки CORS не генерируются для локального адреса, они генерируются для удаленного адреса.

Поэтому, если вы используете windows, вы можете манипулировать, добавляя псевдоним хоста в файл hosts (C : \ Windows \ System32 \ drivers \ etc \ hosts), укажите локальный адрес.

например: 127.0.0.1 test123.com

Затем измените настройки приложения. json:

"CORS-Settings": {
  "Allow-Origins": [
    "http://test123.com:4200",
    "https://test123.com:4200"
  ],
  "Allow-Methods": [ "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE" ]
}

Надеюсь, это поможет.

0 голосов
/ 18 января 2020

Попробуй и посмотри. Сделайте, как показано ниже.

  1. Пожалуйста, измените appsettings.json
"CORS-Settings": {
  "Allow-Origins": [
    "http://localhost:4200",
    "https://localhost:4200"
  ],
  "Allow-Methods": [ "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE" ]
}
Изменить метод настройки.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
{
    var allowedMethods = Configuration.GetSection("CORS-Settings:Allow-Methods").Get<string[]>();
    var allowedOrigins = Configuration.GetSection("CORS-Settings:Allow-Origins").Get<string[]>();

    app.UseCors(
        options => options
        .WithMethods(allowedMethods)
        .WithOrigins(allowedOrigins)
      );
    // other stuff
}
...