You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 Web API遇IIS预检请求CORS错误,求IIS配置排查方案

解决IIS下.NET 6 Web API的CORS预检重定向问题

你的错误核心是预检请求被IIS重定向了——哪怕API站点停着,Angular发的OPTIONS预检请求也没被正确处理,反而被IIS的规则给转走了,这就是为啥API代码里的CORS配置完全没用,因为请求根本没到API层面。

下面是必须检查的IIS设置项:

  • 检查URL重写规则
    要是你给站点配了HTTP转HTTPS、域名跳转这类重定向规则,这些规则会把OPTIONS预检请求也给重定向了。赶紧给重定向规则加个条件:{REQUEST_METHOD} 不等于 OPTIONS,让规则跳过预检请求。

  • 检查默认文档设置
    当请求路径(比如你用的//auth/login)匹配不到API接口时,IIS会自动跳去找默认文档(像index.html、default.aspx),这就触发了重定向。要么把站点默认文档里没用的项删掉,要么给API路径单独禁用默认文档功能,别让IIS瞎跳转。

  • 检查错误页面配置
    站点停着的时候,IIS默认可能返回自定义错误页,但很多自定义错误页是通过重定向返回的,这就坑了预检请求。去站点的错误页设置里,把功能设置改成详细错误,让IIS直接返回500错误,别搞重定向;或者单独给500错误配置直接返回响应,不跳转。

  • 检查IIS CORS模块(如果装了)
    要是你装了IIS的CORS模块,得确保配置对:允许http://localhost:4200这个源,同时允许OPTIONS方法。注意别和API代码里的CORS配置冲突,优先让IIS层面能正确响应预检请求。

  • 检查应用程序池和绑定
    看看站点的应用程序池是不是正确关联了,绑定的域名、端口和你请求的是不是一致。绑定错了的话,IIS可能把请求导去别的站点,自然会有意外重定向。

  • 先改URL里的双斜杠
    你请求的URL是http://apidev.mysite.com//auth/login,双斜杠可能让IIS解析路径出问题,先改成http://apidev.mysite.com/auth/login,排除这个低级问题。

改完之后,用浏览器开发者工具看OPTIONS请求的响应:正常情况下要么返回200带CORS头,要么站点停着时直接返回错误但不重定向,这样Angular就能正常发后续请求了。

内容的提问来源于stack exchange,提问作者CodeMan03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:12:23