簡體   English   中英

不存在“Access-Control-Allow-Origin”標頭 - 面向 .net 框架 4.5.1 的 asp.net 核心 Web api

[英]No 'Access-Control-Allow-Origin' header is present - asp.net core web api targeting .net framework 4.5.1

我有一個服務器端 RESTful API,它是在 c# 中創建的,面向 .NET Framework 4.5.1 並且我的 CORS 配置似乎沒有工作......

public void ConfigureServices(IServiceCollection services) {

        services.AddCors(options => {
            options.AddPolicy("AllowAll",
                    builder => {
                        builder.AllowAnyOrigin()
                               .AllowAnyMethod()
                               .AllowAnyHeader()
                               .AllowCredentials();
                    });
        });

        // Add framework services.
        services.AddMvc();
        services.AddOptions();
    }

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
ILoggerFactory loggerFactory) {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        if (env.IsDevelopment()) {
            app.UseDeveloperExceptionPage();
        }

        var options = new JwtBearerOptions {
            Audience = "MyAudience"
            Authority = "MyAuthority"
        };

        app.UseJwtBearerAuthentication(options);
        app.UseCors("AllowAll");
        app.UseMvc();
    }

每次我在控制器中調用以下 API 時

[Authorize]
[HttpGet]
public Task<JsonResult> Get() {

ICollection<string> abc;
try {
    abc = new List<string>(){"A", "B", "C"};
} catch (Exception) {
    abc = null;
}
return Json(abc);
}

我收到以下錯誤...

“XMLHttpRequest 無法加載 x 對預檢請求的響應未通過訪問控制檢查:請求的資源上不存在 'Access-Control-Allow-Origin' 標頭。因此,不允許訪問 Origin 'x'。響應具有 HTTP 狀態代碼 502。”

來自我的客戶端的 http 請求中有一個“授權”標頭,這就是觸發預檢響應的原因,它有一個有效的令牌等......所以它與這部分無關。

事實上,如果我針對 .NET Core 1.0 創建完全相同的 RESTful API,它會按預期工作。 這讓我相信 CORS 和面向 .NET Framework 4.5.1 存在問題,或者現在我必須添加一些顯式邏輯,否則由 .NET Core 1.0 隱式處理。

我的理解是 CORS 中間件應該處理所有這些,有誰知道這里可能存在什么問題?

編輯:

我忘了提到這在作為 localhost 運行時可以正常工作,我只在部署后看到這個問題。 此外,我針對 .NET Framework 4.6.2 測試了這個問題,但問題仍然存在。

這已得到解決。

https://github.com/aspnet/Tooling/blob/master/known-issues-vs2017.md#aspnet-core-known-issues

正在使用不同版本的 Visual Studio 2017,一些項目\\依賴項針對 .Net Core 1.0,而其他項目\\依賴項針對 .Net Core 1.1,這導致需要不同的運行時。

一旦我們同步到最新版本的 VS2017 (15.2.26430.13),針對 .Net Core 1.1 並在服務器上安裝新的運行時,問題就消失了。

上面的 CORS 錯誤實際上是我在調用堆棧中丟失的 502(錯誤請求)錯誤的副作用......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM