NX Module Federation(Angular)部署本地IIS遇CORS异常,求正确配置方案
解决NX Module Federation部署IIS后的CORS异常问题
核心原因
你在module-federation.config.js里配置的headers仅对**开发环境(ng serve)**生效,部署到IIS后,静态资源由IIS托管,Webpack的配置不会被IIS识别,必须在IIS层面配置CORS规则。
具体解决步骤
1. 安装IIS CORS模块
打开IIS管理器,先确认是否安装了「IIS CORS模块」:
- 若未安装,通过「服务器管理器」→「添加角色和功能」→ 展开「Web服务器(IIS)」→「Web服务器」→「HTTP功能」→ 勾选「CORS」完成安装。
2. 为每个Remote站点配置CORS规则
Host运行在6001端口,需要给6002-6007每个Remote站点单独设置允许Host访问的规则:
- 选中目标Remote站点(比如6002端口的站点),双击「CORS」功能
- 点击右侧「添加规则」:
- 允许的原点:填写
http://localhost:6001(生产环境建议填具体域名,不要用*) - 允许的HTTP方法:勾选
GET和OPTIONS(Module Federation加载资源主要依赖这两个方法,OPTIONS是预请求必须的) - 允许的请求标头:可填
*或按需指定(比如content-type) - 其他选项保持默认,点击「确定」
- 允许的原点:填写
- 对6个Remote站点重复上述配置
3. 确保IIS允许OPTIONS请求
Module Federation加载Remote资源会先发OPTIONS预请求,需确认IIS未禁止该方法:
- 选中站点,双击「请求筛选」
- 切换到「HTTP方法」标签,检查是否存在
OPTIONS;若没有,点击「添加允许的HTTP方法」,输入OPTIONS并确认。
4. 验证配置
部署完成后,打开浏览器开发者工具的「网络」面板:
- 查看Remote资源的请求响应头,确认包含
Access-Control-Allow-Origin,值为http://localhost:6001或你指定的允许值 - 确认OPTIONS预请求返回200状态码
内容的提问来源于stack exchange,提问作者Yogurtu
相关产品推荐
相关产品推荐

