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

添加nosniff头后C# Web应用异常,如何添加MIME类型至请求头?

解决Ext.NET应用添加X-Content-Type-Options:nosniff后的脚本执行异常问题

问题原因

添加X-Content-Type-Options: nosniff后,浏览器开启了严格MIME类型检查。你的Ext.NET应用中,extnet-ini-js/ext.axd请求返回的MIME类型是application/json,但浏览器要求脚本类资源必须返回application/javascript这类可执行的MIME类型,因此脚本被拦截,导致应用异常。

解决方案

方案1:修改web.config中Ext.NET Handler的Content-Type

直接在web.config的<handlers>节点里,为Ext.NET的资源处理器指定正确的MIME类型:

<system.webServer>
  <handlers>
    <!-- 找到或添加Ext.NET的handler配置,添加contentType属性 -->
    <add name="ExtNetHandler" path="*/ext.axd" verb="*" type="Ext.Net.ResourceHandler" preCondition="integratedMode" contentType="application/javascript" />
  </handlers>

  <!-- 保留你的安全头配置 -->
  <httpProtocol>
    <customHeaders>
      <add name="X-Content-Type-Options" value="nosniff" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

注意:确保name、path和type与你现有配置一致,核心是添加contentType="application/javascript"。

方案2:自定义Ext.NET资源处理器,动态返回正确MIME类型

如果方案1不生效,可通过继承Ext.NET的ResourceHandler来重写MIME类型逻辑:

  1. 创建自定义处理类:
using Ext.Net;

namespace YourAppNamespace // 替换成你的项目命名空间
{
    public class CustomExtResourceHandler : ResourceHandler
    {
        protected override string GetContentType()
        {
            // 针对ini-js路径的请求,返回javascript类型
            if (Context.Request.Path.Contains("extnet-ini-js"))
            {
                return "application/javascript";
            }
            // 其他资源保持原有类型
            return base.GetContentType();
        }
    }
}
  1. 修改web.config中的handler指向自定义类:
<system.webServer>
  <handlers>
    <add name="ExtNetHandler" path="*/ext.axd" verb="*" type="YourAppNamespace.CustomExtResourceHandler" preCondition="integratedMode" />
  </handlers>

  <!-- 保留安全头配置 -->
  <httpProtocol>
    <customHeaders>
      <add name="X-Content-Type-Options" value="nosniff" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

方案3:临时针对特定路径移除安全头(不推荐)

如果前两种方案无法实施,可临时对extnet-ini-js/ext.axd路径移除X-Content-Type-Options头(会降低该路径的安全防护,仅作为应急方案):

<location path="extnet-ini-js/ext.axd">
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</location>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:35:22