2017-08-17 76 views
2

我有一個aspnetcore web api被一個在本地工作正常的angularjs應用程序調用。我啓用了CORS,因爲這是我現在可以讓客戶端使用API​​的唯一方式(這似乎是有道理的,現在我需要擔心其他事情)。CORS升級到aspnetcore 2.0後無法正常工作

升級到aspnetcore 2.0今日(因爲它有幾個特點,我可以真正使用)之後,我現在只是拿到我用使CORS之前得到了同樣的錯誤:

否「訪問控制-Allow-Origin'標題出現在請求的資源上。

我已將所有dotnetcore軟件包升級到版本2.0(包括Microsoft.AspNetCore.Cors)。

這可能是值得指出的是,如下我還沒有做出我的啓動或配置改動任何代碼是:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 
    app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());   
    app.UseMvc(); 
} 

public void ConfigureServices(IServiceCollection services) 
{ 
    services.Configure<Models.SmtpConfig>(Configuration.GetSection("Smtp")); 
    services.AddCors(); 
    services.AddMvc(); 
} 

由於這一切之前規定的罰款與aspnetcore 1.1和FYI我打算限制生產中的CORS,因此它只接受來自給定子域的呼叫,但目前尚未解決。

+1

檢查瀏覽器開發工具中的響應。當服務器實際上沒有處理請求並且發送了500請求(在這種情況下,CORS頭文件未被設置)時,我經常會遇到這種情況。 – poke

+0

這是錯誤,我知道這是發生,但我不知道他們爲什麼沒有被設置! –

+1

再次閱讀我的評論,並檢查瀏覽器開發工具中的網絡選項卡。 *「否」Access-Control-Allow-Origin'頭文件'*是執行請求的瀏覽器發生錯誤,但是頭文件丟失的原因可能是由於服務器錯誤。 – poke

回答

2

我不知道,如果回答這是在這裏做正確的事情,但我會說出什麼樣的問題是(基本上是我自己的愚蠢)...

多虧了戳我的原創評論問題我開始深入研究並添加更多斷點(我應該首先完成的),並發現它實際上是代碼中的一個問題(我刪除了一行代碼,它注入了一條命令,它在啓動過程中是處理程序),所以在DI代碼中有一個運行時錯誤,其副作用是沒有在響應中設置頭文件。

不知道爲什麼調試器沒有像以前那樣拋出錯誤,所以對我來說這個教訓是,如果我在瀏覽器中發現CORS錯誤三重檢查它首先不是500服務器錯誤。

相關問題