簡體   English   中英

Azure WebApp Cors 不添加 Cors 標頭

[英]Azure WebApp Cors does not add Cors headers

我有一個 Owin WebAPI2 .NET 應用程序,它托管在 Azure 的 AppService 上。

我想使用 Azure 添加 CORS 支持,如本文所述 看起來很簡單,您只需將一個 Origin 站點添加到列表中,如下所示: http : //screencast.com/t/r2ATq4u5

我現在希望 Response 標頭包含這個允許的 Origin。

但是,當我使用 Fiddler 檢查時,CORS 標頭不包含在響應標頭中: http : //corstestqm.azurewebsites.net/breeze/restaurantsbreeze/basictest

我嘗試過的步驟:

  • 從我的解決方案中剝離了所有 CORS Nuget 庫以及我的 API 項目中的所有 CORS 代碼痕跡。
  • 部署到全新的 AppService
  • 啟用 Owin Cors AllowAll

這些都沒有任何影響。 (即響應不包含 Azure 中指定的 CORS 標頭)。

我在這里錯過了一些非常基本的東西嗎?

更新我進一步簡化了問題:在 VS2015 中,我創建了一個新的 API 項目並將其推送到http://corstestbasicap2.azurewebsites.net/api/values/沒有任何更改(即它不應該啟用 CORS)。

然后我使用Test-Cors 工具來訪問該 API。 它沒有像預期的那樣出現 CORS 錯誤。 然后我進入 Azure 並添加一個虛擬 URL(例如http://www.example.com )並再次嘗試 CORS 測試。 它應該會失敗,因為 Azure 應該只讓 example.com 通過。 但是,它工作正常。

然后,我編輯在Azure中再次CORS並添加http://www.test-cors.org以下http://www.example.com (所以它應該讓無論是通過),現在頭返回Access-Control-Allow-Origin:http://www.test-cors.org正如預期的那樣。

但這沒有意義嗎? 當“ http://www.test-cors.org ”不在允許的起源中時,上一個調用肯定會失敗嗎? 它似乎沒有做任何有用的事情?!

您可以通過在 web.config 波紋管配置中添加來實現這些:

<system.webServer>
     <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept,Authorization"/>
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

在 global.asax 中:

protected void Application_BeginRequest()
{
  if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
  {
    Response.Flush();
  }
}

如果您想從門戶進行控制,請查看下圖:

請注意,根據應用服務 CORS 文檔,您不能在一個 API 應用中同時使用 Web API CORS 和應用服務 CORS。 您必須清理有關 Web API CORS 的項目

不要嘗試在一個 API 應用程序中同時使用 Web API CORS 和應用服務 CORS。 應用服務 CORS 優先,Web API CORS 無效。 例如,如果您在應用服務中啟用一個源域,並在您的 Web API 代碼中啟用所有源域,則您的 Azure API 應用將只接受來自您在 Azure 中指定的域的調用。

在此處輸入圖片說明

我的問題是我不小心將 http 而不是 https 放入 Azure AD B2C 自定義頁面配置刀片...更改為 https 后,它就像一個魅力。

在 Azure Web App/Azure API 上部署時缺少 CORS 標頭

暫無
暫無

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

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