2017-03-14 11 views
5

グローバルasp.netウェブAPIコアでCORSを有効にする方法: それを行うには2つの方法があるようですので、私は、グローバルに有効にする方法で混乱していますがhttps://docs.microsoft.com/en-us/aspnet/core/security/cors私は、このサイトを見つけました

、いただきました!これらの2つの方法の違いは?または彼らは2つの異なることをしますか?

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

明瞭にするために、コードブロックを2つの方法に分割してください。 – ahsteele

+0

唯一正しい答えをマークして、それに賞金をかけたのはなぜですか?信頼できる公式ソースから回答を探していますか?** –

+0

それは間違いでしたが、私はそれを矯正する方法を見ません。どうすれば賞金を取り除くことができますか? –

答えて

4

ConfigureServicesのコールはちょうど(HTEポリシーを作成するなど)に設定されていない、CORSサービスを追加します。フィルタを追加することでグローバルにすることができますが、UseCors(Configureで)をグローバルに追加することをお勧めします。 Filterコードが行うことは、すべてのコントローラの属性を強制することであり、UseCorsはスタックの別の部分だけで同じことを効果的に行います。私は、UseCorsがそれが異なるMVCコール以上のためにそれを行うと信じています。

関連する問題