iis netcore 设置跨域后 httpDelete 不起作用
关于net core 站点通过iis部署,Delete和Put请求被拦截报跨域错误的问题
环境:netcore 5.0 iis 8.5
ajax调用delete接口时发生了以下错误
很困惑,检查了跨域配置如下:
并正常启用了中间件如下:
前端访问均正常,且get、post等请求也能正常访问,就是delete和put报了405 methd not allowed 和跨域错误,意识到事情没有那么简单.因为之前配置了跨域后还是没有生效的问题,原因出在iis上,详情请阅读关于net core 站点通过iis部署,跨域配置遇到的问题。一番查阅之后,发现和iis确实有关系,罪魁祸首是WebDAVModule,它似乎设置了默认禁用的PUT和DELETE请求方法。为了让它们正常工作,我们要么需要更改这些默认设置,要么需要为整个Web应用程序禁用它,修改web.config文件如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\Kinte.WebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </location> </configuration>
禁用之后,问题就解决了!
总结:问题的关键其实是设置了进程内托管,选择进程内托管,意味着将 .NetCore 应用程序的工作进程托管到 IIS 的工作进程 w3wp.exe 中,使用的 IIS 进程内服务器,即使用的是:IISHttpServer.
WebDAVModule模块默认是开启的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
2019-12-19 五分钟重温C#委托,匿名方法,Lambda,泛型委托,表达式树
2019-12-19 C#6.0 的新特性
2019-12-19 查找
2019-12-19 多路查找树 B树 哈希表查找 散列表查找