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

Blazor Server部署IIS新站点遇混合内容错误,求IIS配置排查方案

排查Blazor Server IIS站点混合内容(Mixed Content)错误的解决方案

问题背景

已搭建一个Blazor Server API,通过自签名证书在本地IIS以HTTPS托管运行正常;但按相同流程新建第二个Blazor Server API及对应IIS站点时,出现混合内容错误。将新API发布至原有正常站点可正常运行,复制原有站点配置重建故障站点后问题依旧,确认问题出在新IIS站点配置上。控制台显示多个HTTP资源(图片、样式表、脚本)被拦截或自动升级,部分第三方HTTP资源(如mailcontrol.com的图片)虽能显示但仍报错。

具体排查步骤

  • 检查并配置HTTP严格传输安全(HSTS)
    旧站点可能已启用HSTS自动将HTTP请求升级为HTTPS,新站点缺失该配置。在站点的web.config中添加以下配置:

    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
    
  • 配置URL重写规则强制HTTPS及资源升级
    确保站点有URL重写规则将所有HTTP请求跳转到HTTPS,同时添加规则将第三方HTTP资源请求重写为HTTPS:

    <system.webServer>
      <rewrite>
        <rules>
          <!-- 强制HTTPS跳转 -->
          <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="Permanent" />
          </rule>
          <!-- 重写第三方HTTP资源为HTTPS -->
          <rule name="Upgrade third-party HTTP resources" stopProcessing="false">
            <match url=".*http://(.*)" />
            <action type="Rewrite" url="https://{R:1}" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
    
  • 验证Blazor应用的资源引用配置
    检查_Host.cshtml(Blazor Server)中的base标签是否使用HTTPS地址:

    <base href="https://transactions.oracle.local/" />
    

    同时确保应用内所有静态资源、第三方资源引用使用相对路径或HTTPS绝对路径,避免硬编码http://开头的地址。

  • 检查IIS站点绑定与SSL设置

    • 确认新站点仅绑定HTTPS,删除不必要的HTTP绑定;
    • 进入站点的“SSL设置”,勾选“要求SSL”并设置客户端证书为“忽略”;
    • 验证自签名证书已正确绑定到站点,且证书状态正常。
  • 核对applicationHost.config的深层配置差异
    对比新旧站点在applicationHost.config中的以下配置:

    • 应用程序池的.NET版本、托管管道模式是否一致;
    • 站点是否启用了相同的IIS模块(如URL Rewrite、ASP.NET Core模块);
    • 站点的自定义HTTP响应头是否完全一致,避免遗漏旧站点的安全头配置。

额外说明

针对日志中出现的第三方资源(如mailcontrol.com),即使浏览器会自动升级HTTP请求,部分资源仍可能被浏览器的混合内容策略拦截。最彻底的解决方式是确保应用中所有第三方资源引用直接使用HTTPS地址,配合IIS的重写规则作为兜底方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:35:53