.NET 6本地WebAPI启用HTTP仍跳转HTTPS问题排查
.NET 6 WebAPI本地HTTP运行配置方案
以下是解决HTTP访问自动跳转HTTPS问题的具体步骤:
1. 调整launchSettings.json配置
项目根目录下的Properties/launchSettings.json是启动配置核心文件,默认会同时启用HTTP和HTTPS端点,且可能默认指向HTTPS地址。修改方式:
- 打开该文件,找到
profiles节点,保留http配置并删除https配置项 - 将
applicationUrl设置为纯HTTP地址(例如http://localhost:5000) - 确保
launchUrl指向HTTP的Swagger地址(或直接设为swagger,框架会自动匹配当前端口)
示例修改后的配置片段:
"profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
2. 检查Kestrel端点配置
如果你的Program.cs中手动配置了Kestrel的HTTPS监听,需要移除该配置。比如以下代码中要删除HTTPS监听的行:
builder.WebHost.ConfigureKestrel(serverOptions => { // 移除或注释掉这行HTTPS配置 // serverOptions.ListenAnyIP(5001, o => o.UseHttps()); serverOptions.ListenAnyIP(5000); });
3. 清理浏览器缓存
部分浏览器会缓存HTTPS重定向规则,即使后端配置修改后,仍会自动跳转。可以:
- 清除当前站点的缓存数据
- 使用无痕浏览模式访问HTTP地址
4. 确认HSTS中间件配置
检查Program.cs中是否启用了UseHsts()中间件,该中间件会强制浏览器使用HTTPS。确保仅在非开发环境启用:
if (!app.Environment.IsDevelopment()) { app.UseHsts(); // 仅生产环境启用 }
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

