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

请求Node.js页面时出现net::ERR_TOO_MANY_REDIRECTS错误求助

解决IIS中Node.js页面出现net::ERR_TOO_MANY_REDIRECTS的问题

我来帮你排查这个net::ERR_TOO_MANY_REDIRECTS的问题,结合你提供的web.config片段,大概率是重写规则配置不当或者和Node.js应用的逻辑冲突导致的循环重定向,下面是具体的排查和解决步骤:

1. 补全并修正HTTPS重写规则

从你给出的web.config片段来看,HTTP转HTTPS的重写规则没有写完,这很可能是导致循环的核心原因。正确的规则需要判断当前请求是否已经是HTTPS,同时排除Node.js的入口文件(避免iisnode处理时触发重复重定向)。

修改后的完整重写规则示例:

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
        <!-- 只对HTTP请求进行重定向 -->
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
        <!-- 排除Node.js入口文件,防止iisnode处理时触发循环 -->
        <add input="{REQUEST_URI}" negate="true" pattern="^/server/server.js$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>
    <!-- 保留Node.js路由规则,确保请求能正确转发到server.js -->
    <rule name="Node.js routing" stopProcessing="true">
      <match url="/*" />
      <action type="Rewrite" url="server/server.js" />
    </rule>
  </rules>
</rewrite>

2. 检查Node.js应用内部的重定向逻辑

如果你的server.js代码里自己也实现了HTTP转HTTPS的重定向(比如下面这种),就会和IIS的重写规则形成双向循环:

// 示例:Node.js内部的HTTPS重定向逻辑
if (req.protocol !== 'https') {
  return res.redirect(`https://${req.headers.host}${req.url}`);
}

这种情况下,你需要关闭其中一方的重定向逻辑——要么保留IIS的规则,要么保留Node.js的代码,不要同时启用。

3. 验证IIS站点的绑定配置

  • 确保你的IIS站点同时绑定了HTTP(端口80)和HTTPS(端口443),如果只绑定了HTTPS,IIS会无法处理HTTP请求,间接导致重定向异常。
  • 检查HTTPS绑定的SSL证书是否有效,证书无效也可能导致浏览器反复尝试重定向。

4. 清除浏览器缓存后测试

浏览器会缓存301永久重定向的规则,即使你修复了配置,旧的缓存可能还会导致循环重定向。建议清除浏览器缓存,或者使用隐私模式打开页面测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:03:41