關於net core 站點通過iis部署,Delete和Put請求被攔截報跨域錯誤的問題
阿新 • • 發佈:2021-11-03
ajax呼叫delete介面時發生了以下錯誤
很困惑,檢查了跨域配置如下:
並正常啟用了中介軟體如下:
前端訪問均正常,且get、post等請求也能正常訪問,就是delete和put報了405 methd not allowed 和跨域錯誤,意識到事情沒有那麼簡單.因為之前配置了跨域後還是存在沒有生效的問題,原因出在iis上,一番查閱之後,發現和iis確實有關係,罪魁禍首是WebDAVModule,它似乎設定了預設禁用的PUT和DELETE請求方法。為了讓它們正常工作,我們要麼需要更改這些預設設定,要麼需要為整個Web應用程式禁用它,修改web.config檔案如下:
<system.webServer> <modules runAllManagedModulesForAllRequests="false"> <remove name="WebDAVModule" /> </modules> </system.webServer>
禁用之後,問題就解決了!
總結:問題的關鍵其實是設定了程序內託管,選擇程序內託管,意味著將 .NetCore 應用程式的工作程序託管到 IIS 的工作程序 w3wp.exe 中,使用的 IIS 程序內伺服器,即使用的是:IISHttpServer.