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

ASP.NET Core 3.1 JS调用Razor Page跳转后HTTPS变HTTP问题

排查与解决步骤

1. 验证前端生成的URL协议

首先触发按钮点击事件,查看浏览器控制台打印的url日志:

  • 若打印的URL前缀为http://:说明请求到ASP.NET Core runtime时已经是HTTP协议,你看到的地址栏HTTPS是反向代理(IIS、Nginx等)转发的,需要配置转发原始协议头:
    1. 在Startup.cs的Configure方法开头(所有其他中间件之前)添加转发头中间件:
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });
    
    1. 在ConfigureServices中添加代理信任配置:
    services.Configure<ForwardedHeadersOptions>(options =>
    {
        options.KnownProxies.Add(IPAddress.Parse("127.0.0.1")); // 替换为你的反向代理实际IP
    });
    

2. 前端URL为HTTPS时的后台配置修复

如果控制台打印的URL确实是https://开头,问题出在后台服务的跳转策略:

  • 检查Configure方法是否启用了HTTPS重定向,需放在路由、认证中间件之前:
app.UseHttpsRedirection();
  • 修改Cookie安全策略,生产环境强制使用HTTPS:
// 替换原CookiePolicy中的Secure配置
options.Secure = CookieSecurePolicy.Always;
  • 检查appsettings.json中微软身份认证的回调地址配置,确保所有回调地址均为HTTPS协议,避免认证跳转时降级为HTTP。

3. Razor Page返回逻辑修正

你当前的OnPostBatchReport方法直接返回字符串,form提交后浏览器会直接展示该字符串,地址栏会保留提交的原始URL。如果后续需要跳转至报表页面,不要硬编码绝对地址,使用框架提供的RedirectToPage等方法生成相对路径地址,框架会自动适配正确的协议。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:36:09