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

在IIS 8.5中使用URL Rewrite实现HTTP转HTTPS重定向问题排查

解决IIS 8.5中HTTP转HTTPS重定向丢失表单数据的问题

这个坑我之前帮好几个开发者踩过——核心原因是你用的默认重定向状态码(301/302)会把POST请求强制转换成GET,表单里的用户名、密码自然就丢了。要解决这个问题,只需要把重定向规则改成保留请求方法和数据的状态码就行,具体操作分两种方式:

方式一:通过IIS图形界面修改规则

  • 打开IIS管理器,定位到你的目标站点,找到并进入「URL Rewrite」模块
  • 在规则列表里找到你现有的「HTTP转HTTPS」规则,双击进入编辑页面
  • 切换到「操作」标签页,把「重定向类型」从默认的「临时(302)」或「永久(301)」,改成「临时重定向(307)」或者「永久重定向(308)」
  • 点击「应用」保存规则,之后测试表单提交就能看到数据被保留了

方式二:手动修改web.config配置文件

如果图形界面操作不方便,直接改站点根目录下的web.config更高效。找到<rewrite>节点下的对应规则,修改redirectType属性:

原规则(会丢失数据)

<rule name="HTTP to HTTPS Redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" /> <!-- Found对应302 -->
</rule>

修改后的规则(保留表单数据)

<rule name="HTTP to HTTPS Redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
  </conditions>
  <!-- 选择其中一种redirectType -->
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Temporary" /> <!-- Temporary对应307,临时重定向 -->
  <!-- <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> <!-- Permanent对应308,永久重定向 -->
</rule>

关于307和308的区别

  • 307临时重定向:告诉浏览器这是临时的地址变更,会严格保留原请求的方法(POST)和所有表单数据,适合还在测试HTTPS配置的场景
  • 308永久重定向:和307一样保留请求方法和数据,但会告诉浏览器这个地址变更永久有效,适合已经确定全站HTTPS的生产环境

额外注意事项

  • 现在主流浏览器(Chrome、Firefox、Edge、Safari)都完美支持307/308,不用太担心兼容性问题;如果还有老IE用户,可能需要额外处理,但现在这类场景已经很少了
  • 测试时可以打开浏览器开发者工具(F12),查看网络请求的状态码和请求方法,确认重定向后依然是POST请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:11:21