2017-03-14 45 views
5

Znalazłem stronę: https://docs.microsoft.com/en-us/aspnet/core/security/corsJak włączyć Cors globalnie w asp.net Web API rdzenia

Jednak jestem mylić w jaki sposób włączyć globalnie, ponieważ wydaje się, że są 2 sposoby, aby to zrobić, whats różnica między tymi dwoma sposobami? czy robią 2 różne rzeczy?

public IConfigurationRoot Configuration { get; } 

     // This method gets called by the runtime. Use this method to add services to the container. 
     public void ConfigureServices(IServiceCollection services) 
     { 
      //https://docs.microsoft.com/en-us/aspnet/core/security/cors 
      services.AddCors(options => 
      { 
       options.AddPolicy("AllowSpecificOrigin", 
        builder => builder.WithOrigins("http://example.com") 
             .AllowAnyHeader() 
        ); 
      }); 

      services.Configure<MvcOptions>(options => 
      { 
       options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin")); 
      }); 

      // Add framework services. 
      services.AddMvc(); 
     } 

     // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
     public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
     { 
      loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
      loggerFactory.AddDebug(); 

      app.UseCors("AllowSpecificOrigin"); 

      app.UseMvc(); 
     } 
+0

Luis ze względu na klarowność, mógłbyś złamać blok kodu na dwa sposoby? – ahsteele

+0

Dlaczego zaznaczono jedyną poprawną odpowiedź, a następnie umieścić na niej nagrodę skarbową ** Szukasz odpowiedzi z wiarygodnych i/lub oficjalnych źródeł. **? –

+0

to był błąd, ale nie widzę sposobu, żeby to naprawić., Jak mogę usunąć nagrodę? –

Odpowiedz

4

Połączenia w ConfigureServices po prostu dodają serwisy Cors, a nie je konfigurują (w tym tworzenie zasad hte). Dodając filtr, stajesz się globalny, ale rozumiem, że UseCors (w Konfiguracji) jest preferowanym sposobem dodawania go globalnie. Wszystko, co robi Kod Filtra wymusza atrybut na wszystkich kontrolerach, a UseCors skutecznie robi to samo, tylko w innej części stosu. Wierzę, że UseCors zrobi to dla więcej niż tylko połączeń MVC, dlatego jest inny.