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

IIS 10预检请求遭CORS拦截,安装CORS模块出现500错误

IIS 10 闭源API CORS预检404及模块安装500问题解决

问题背景

对接运行在IIS 10服务器上的闭源API,React前端最初所有请求均被CORS拦截。已在IIS中添加以下自定义CORS响应头:

Access-Control-Allow-Origin: <IP:PORT>
Access-Control-Allow-Methods: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: *

目前普通请求可正常执行,但OPTIONS预检请求返回404,报错信息:
Access to XMLHttpRequest from origin has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status
尝试安装官方IIS CORS模块后,服务器出现500错误。

解决方案

1. 修复预检请求404(无需额外安装模块)

由于API是闭源无法修改后端代码处理OPTIONS请求,可通过IIS URL重写模块直接拦截并返回合法响应:

  • 打开IIS管理器,进入目标站点,点击「URL重写」
  • 添加空白规则,配置如下:
    • 规则名称:Handle OPTIONS Preflight
    • 匹配URL:选择「通配符」,模式设为*
    • 条件:添加条件,输入{REQUEST_METHOD},匹配类型选「精确匹配」,值为OPTIONS
    • 操作:选择「自定义响应」
      • 状态代码:200
      • 状态描述:OK
      • 响应头:添加你已配置的所有CORS头(和之前手动添加的一致)
  • 保存规则后,测试预检请求是否返回200状态码

2. 解决CORS模块安装后的500错误

若必须使用官方CORS模块,500错误多由配置冲突或依赖缺失导致:

  • 先删除之前手动添加的自定义CORS响应头,避免和模块规则冲突
  • 检查IIS是否已安装URL Rewrite和Application Request Routing (ARR)模块,CORS模块依赖这两个组件
  • 重新安装CORS模块后,在站点「CORS」配置界面仅保留必要规则:
    • 允许来源设为前端的<IP:PORT>
    • 允许方法勾选所需类型(或直接选*)
    • 勾选「允许凭据」
    • 允许头设为*
  • 重启IIS服务后再次测试

3. 额外排查方向

  • 检查IIS站点的「处理程序映射」,确认未禁止OPTIONS请求的处理权限
  • 查看服务器事件查看器(Windows日志→应用程序),获取500错误的详细日志,定位具体报错原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:00:10