在保留指定端口号的同时重定向至HTTPS的方法咨询
问题解答
结论
仅通过HSTS无法实现自定义HTTP端口到对应HTTPS端口的重定向,必须配合IIS URL Rewrite规则来完成。
原因说明
HSTS的核心作用是通过Strict-Transport-Security响应头,强制浏览器后续对该域名的请求直接使用HTTPS协议,但它不处理非标准端口的映射逻辑:
- 浏览器默认只识别HTTP的标准端口80对应HTTPS的标准端口443,对于自定义端口(比如8080),HSTS没有内置的端口映射规则,会直接丢弃原端口,跳转到HTTPS的默认端口443。
解决方案:配置IIS URL Rewrite规则
- 确保已安装IIS URL Rewrite模块(如果未安装,可通过IIS管理器的“模块”功能添加)。
- 在目标站点的
web.config文件中添加以下重写规则,实现HTTP到HTTPS的重定向并保留原端口:
<configuration> <system.webServer> <rewrite> <rules> <rule name="HTTP to HTTPS (Preserve Port)" stopProcessing="true"> <!-- 匹配所有URL路径 --> <match url="(.*)" /> <!-- 仅对HTTP请求生效 --> <conditions> <add input="{HTTPS}" pattern="off" /> </conditions> <!-- 重定向到HTTPS,{HTTP_HOST}会保留原域名和端口 --> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
补充说明
可以继续保留HSTS配置,URL Rewrite规则负责完成首次HTTP到对应端口HTTPS的重定向,HSTS则确保后续浏览器直接发起HTTPS请求,避免重复跳转。
内容的提问来源于stack exchange,提问作者Bob V
相关产品推荐
相关产品推荐

