2017-05-11 63 views
1

我在同一個解決方案中有一個ASP.Net核心和一個Web Api項目。我從我的Api項目中定義的核心項目中調用Get,Post,Put,Delete。當然,我需要啓用CORS。預檢響應中的Access-Control-Allow-Headers不允許請求標頭字段x-ms-request-root-id

貝婁是我在網絡API的web.config文件中添加的代碼,

<httpProtocol> 
    <customHeaders> 
    <!-- Enable Cross Domain AJAX calls --> 
    <clear /> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
      <add name="Access-Control-Allow-Headers" value="Content-Type"/> 
    </customHeaders> 
</httpProtocol> 

而且從核心項目我的Ajax代碼,

$.ajax({ 
     "url": "myApiUrl", 
     "type": "Get", 
     "data": { 
      //Here I'm passing a value 
     }, 
     success: function (d) { 
     } 

我設置兩個項目作爲啓動項目。沒什麼大不了。它調用Api方法並返回數據。但有時它不會返回任何東西,即使該方法返回數據,我也會在我的問題標題中提到的browser console中發生錯誤。我在SO中查了很多答案,包括this one,都說我需要在我的response header中加access control。任何人都可以告訴我需要添加的內容以及我需要添加的內容,以便它能按預期工作。

我也檢查了Asp.net MVC項目,而不是核心,同樣的事情發生。

注意:我在我的Web Api項目中添加了CORS而不是在我的Web項目中。

+0

是否在Web API操作中啓用授權,即授權屬性? –

+0

編號現在,我提供了所有我沒有驗證的Api方法 –

+0

好的。你能說明你是如何啓用CORS的嗎? –

回答

0

試試這個:

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddCors(o => o.AddPolicy("CrossPolicy", builder => 
    { 
     builder.AllowAnyOrigin() 
       .AllowAnyMethod() 
       .AllowAnyHeader(); 
    })); 

    // ... 
} 

爲每一個請求:

public void Configure(IApplicationBuilder app) 
{ 
    app.UseCors("CrossPolicy"); 

    // ... 
} 

OR

[EnableCors("CrossPolicy")] 

可以在thisthis鏈接找到更多信息。

希望它對您有所幫助。

+0

我的應用程序中沒有ApplicationOAuthProvider類或MatchEndpoint。我需要添加那些還是什麼?如果我需要添加,然後我需要添加? –

+0

我更新了我的答案。並且對我以前的回答感到抱歉。這是ASP.NET web api 2 @ BasantaMatia – Ashiquzzaman

1

我想你沒有在Web API中正確啓用CORS。您可以通過以下過程執行此操作:

1)您可以將[EnableCors]屬性放在Web API的控制器中,或全局放入WebAPI配置中。

示例 - [EnableCors("*", "*", "*")]。 把它放在控制器上(你想允許CORS)。 注意:您可以修改屬性,這個過濾器允許某些方法,網址等

2)WebAPi.config呼叫enableCors即

public static void Register(HttpConfiguration config) 
    { 
    // Other configuration omitted 
    config.EnableCors(); 
    } 

編輯:如果您需要在全球範圍內啓用CORS,刪除EnableCors屬性從控制器並修改WebApiConfig.cs文件中的EnableCors()行爲:

config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 
+0

雖然我想要全局,但這就是爲什麼我在web.config文件中添加的原因。沒有任何問題。但是,我需要寫註冊方法嗎? –

+0

你不需要寫寄存器方法。它已經存在於web api項目的WebApiConfig.cs文件中。它的默認創建。你只需要在裏面添加行。 –

+0

目前我正在研究ASP.Net Core。沒有名爲WebApiConfig.cs的文件。我在Configure方法下的startup.cs文件中添加。說,不包含EnableCors的定義。 –

相關問題