2017-10-23 13 views
2

この質問は何度も尋ねられるかもしれませんが、オンラインで利用可能な解決策は私のために働いていません。私たちのプロジェクトでASP NET CORE - ANGULAR要求されたリソースに 'Access-Control-Allow-Origin'ヘッダーが存在しません

我々はそれがデータベースを処理するWebメソッドにAsp.Netページとして持っているか、私はそれをこのように置くかのように、我々はWEBAPIを持っている: - 私たちは、ASPNET持っ

http://server/Pages/ApplicationData.aspx/GetApplicationLookups

今このAPI

postgetGetApplicationLookups(url: string) { 
    var headers = new Headers(); 
    headers.set('Accept', 'application/json; charset=utf-8'); 
    headers.set('content-Type', 'application/json; charset=utf-8'); 
    let data = {}; 
    debugger; 
    return this.http.post(
     url, 
     data, 
     { headers: headers } 
    ) 
     .map(this.handleSuccess) 
     .catch(this.handleError) 
} 

は、私は次のエラーを取得することを呼び出し、コア角度Webアプリケーション: - enter image description here

私はPOSTMANで作業する場合

このPOSTコールが正常に動作します: -

enter image description here

私は次のコードで私のStartup.csを変更しますが、私はまだ同じエラーを取得しています。

public Startup(IConfiguration configuration) 
    { 
     Configuration = configuration; 
    } 

    public IConfiguration Configuration { get; } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()   //Fix API ISSUE 
                    .AllowAnyMethod()    //Fix API ISSUE 
                    .AllowAnyHeader()));   //Fix API ISSUE 


     services.AddMvc(); 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
      app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions 
      { 
       HotModuleReplacement = true 
      }); 
     } 
     else 
     { 
      app.UseExceptionHandler("/Home/Error"); 
     } 

     app.UseStaticFiles(); 

     app.UseCors("AllowAll");   

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 

      routes.MapSpaFallbackRoute(
       name: "spa-fallback", 
       defaults: new { controller = "Home", action = "Index" }); 
     }); 
    } 

私の誤差がある: - http://server/Pages/ApplicationData.aspx/GetApplicationLookupsの読み込みに失敗しました:プリフライトリクエストへの応答は、アクセス制御チェックに合格しない:いいえ「アクセス制御 - 許可 - 起源」ヘッダは、要求されたリソース上に存在します。 Origin 'http://localhost:60602'はアクセスできません。

私が紛失している可能性のあるアイデア。

おかげ

答えて

3

注文事項StartUp.csに物事を追加します。 ConfigureServices機能で

、あなたはAddCorsコールの後AddMvcコールを持っている必要があります。 Configure機能で

services.AddCors(options => 
{ 
    options.AddPolicy("AllowAll", p => 
    { 
     p.AllowAnyOrigin() 
     .AllowAnyHeader() 
     .AllowAnyMethod(); 
    }); 
}); 
... 
services.AddMvc(); // must be after AddCors 

、ちょうど1つのUseCorsコールを使用します。

app.UseCors("AllowAll"); 
app.UseMvc(); 

をそして、あまりにも、UseMvc呼び出し前に呼び出されていることを確認します。

これが役に立ちます。

+0

私はコードを更新しました。 ありがとう – user31823

+0

こんにちは、同じサーバーからPOSTMANで同じURLを試してみました。後で私はGETリクエストメソッドを追加しました。私のプロジェクト、つまりVisual Studio 2017では機能しません。 私はサーバーを変更しようとしましたが、すべての異なるアカウントを持つすべてのサーバーで動作しませんでした。 – user31823

+0

私は郵便配達員の仕組みを知らないので、私はそれを使用しません。しかし、私はASP.NETとCorsについて知っていますし、あなたがそれを実行すると要求を受け取ることができるようにCorsのエラーを受け取らないように設定する方法を知っています。 Corsへのアクセスは、クライアントではなくサーバー上で構成されます。したがって、あなたの状況で、あなたが投稿しているサーバがlocalhostからの呼び出しを受け取るように設定されていない場合、動作しません。 –

関連する問題