簡體   English   中英

在本地 IIS 中啟用 Cors

[英]Enabling Cors in local IIS

我試過按照微軟的步驟

https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

我提交了我在下面的 GitHub 鏈接中創建的代碼

https://github.com/RGatchalian/StackOverflowQuestions/tree/master/ASPNET/EnablingCors

只是為了解釋一下,前端文件夾是從 Javascript 到 WebApi 的調用,而 TestingCors 文件夾是 WebApi。 我目前正在我的本地 IIS 中運行它。 我使用 Web 部署部署了 WebApi,並將前端放入 inetpub/wwwroot/。 當兩者都在本地主機中時它實際上有效

在此處輸入圖像描述

我遇到的問題是當我正在開發並想要測試時,我遇到了錯誤。 在此處輸入圖像描述

唯一的解決方法是將 Chrome 與 disable-web-security 一起使用。 它有效。 我嘗試使用從 Google 獲得的內容更改 WebApiConfig.cs 和 web.config,但它仍然無法正常工作。

在此處輸入圖像描述

更新這是代碼

  <system.web>
    <authentication mode="Windows"/>
    <authorization>     
        <allow users="*" />   
    </authorization> 
    <!-- <compilation targetFramework="4.5.2" /> -->
    <!-- <httpRuntime targetFramework="4.5.2" /> -->
    <customErrors mode="Off" />
  </system.web>
  <system.webServer>
    <cors enabled="true" >
        <add origin="*"  />           
    </cors>
  </system.webServer>

這是我在放置 allowCredetials 時遇到的錯誤

在此處輸入圖像描述

當我刪除 allowCredentials 時,它可以工作,但未檢測到用戶。 在此處輸入圖像描述

我可以在我這邊重現這個問題。

在此處輸入圖像描述

web 瀏覽器返回此錯誤的原因是您從物理路徑打開 index.htm 並且 CORS 被阻止。

請從 IIS 或 IIS 快遞打開它。 然后你需要修改你的屬性

 [EnableCors(origins: "http://www.myclient.com", headers: "*", methods: "*", SupportsCredentials = true)]

最后,當您從http://www.myclient.Z4D236D9A20D102C5FE6AD1C調用 api 時,您將看到 CORS

在此處輸入圖像描述

在此處輸入圖像描述

它與 CORS 問題有關。 跨域資源共享,需要開啟cors來解決。 我們可以通過三種方式啟用 CORS:

  1. 全球水平
  2. controller級
  3. 或特定方法級別

如果要在方法級別啟用,可以裝飾 EnableCors 屬性,請檢查以下代碼: [EnableCors(origins: " ", headers: " ", methods: "*")] 您可以在 origin 中編寫特定的 url,header 也可以設置您將要傳遞的特定 header 和您需要應用的方法名稱。 我正在為所有通用添加 *(任何人都可以訪問)。

希望對您解決問題有所幫助。

暫無
暫無

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

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