1

aspnetboilerplate asp.net コア アプリケーションを Azure の App Service としてホストし、Azure VM の Angular アプリケーションをホストしました。

Angular アプリケーションが asp.net コア アプリケーションを要求しようとすると、AbpUserConfiguration/GetAll に対して CORS エラーが発生します。

驚くべきことに、ローカル ワークステーションから角度アプリケーションを実行すると、これはうまく機能します。この問題は、Azure VM から angular アプリケーションを実行しようとしたときにのみ発生します。

ConfigureServices 関数には、CORS と MVC の正しい順序があります。特定のオリジンとAllowCredentialsでも試しましたが、うまくいきませんでした。

        //Configure CORS for angular2 UI
        services.AddCors(options =>
        {
            options.AddPolicy(DefaultCorsPolicyName, p =>
            {                    
                p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
            });
        });

        //MVC
        services.AddMvc(options =>
        {
            options.Filters.Add(new CorsAuthorizationFilterFactory(DefaultCorsPolicyName));
        });

AllowAnyOrigin と AllowAnyMethod を設定しましたが、ネットワーク リクエストは以下のように表示されます

    Access-Control-Request-Headers:abp.tenantid,authorization,content-type
    Access-Control-Request-Method:GET 

すべての応答は大歓迎です!

4

4 に答える 4

0

ConfigureServices のコードは、CORS 機能を登録し、カスタム ポリシーを作成しています。ご利用にあたっては、お申し込み時にポリシーを適用する必要があります。グローバル ポリシーを意図している場合は、Startup.cs の Configure メソッドでポリシーを適用します。以下のようになります。

public void Configure(IApplicationBuilder app)
{
    // ...

    // global CORS policy
    app.UseCors(DefaultCorsPolicyName);

    // ...

    // IMPORTANT: Make sure UseCors() is called BEFORE this
    app.UseMvc()
}

または、特定のコントローラーに適用する必要がある場合は、次の方法で同じことができます

[EnableCors(DefaultCorsPolicyName)]
public class SampleController : Controller 
{
  //Controller code
}
于 2017-06-28T04:44:59.410 に答える