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

如何通过IIS URL Rewrite为3xx响应添加Content-Security-Policy头?

针对指定子路径的3xx响应添加CSP头的IIS URL Rewrite配置

核心配置示例(web.config 片段)

直接把这段配置添加到你的站点web.config的<system.webServer>节点下即可:

<configuration>
  <system.webServer>
    <rewrite>
      <outboundRules rewriteBeforeCache="true">
        <!-- 为指定子路径的3xx响应添加CSP头 -->
        <rule name="Add CSP to 3xx Responses for Target Subpath" enabled="true">
          <!-- 匹配3xx类响应状态码 -->
          <conditions logicalGrouping="MatchAll">
            <add input="{RESPONSE_STATUS}" pattern="^3\d{2}$" />
            <!-- 替换成你需要的目标子路径,比如/api/*或/admin/* -->
            <add input="{REQUEST_URI}" pattern="^/your-target-subpath/.*" />
          </conditions>
          <!-- 保持原响应状态,仅添加CSP头 -->
          <action type="CustomResponse" statusCode="{RESPONSE_STATUS}" statusReason="{RESPONSE_STATUS_REASON}" statusDescription="{RESPONSE_STATUS_DESCRIPTION}" />
          <serverVariables>
            <!-- 替换为你的实际CSP规则,按需调整 -->
            <set name="RESPONSE_Content_Security_Policy" value="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:;" />
          </serverVariables>
        </rule>
      </outboundRules>
    </rewrite>
  </system.webServer>
</configuration>

关键配置说明

  • rewriteBeforeCache="true":保证规则在响应被缓存前执行,避免缓存缺失CSP头的旧响应
  • 条件匹配:同时满足两个条件才触发规则——响应状态是3xx,原始请求URL属于指定子路径
  • serverVariables设置:RESPONSE_Content_Security_Policy是IIS识别的响应头变量名,必须大写、下划线分隔,值替换成你的合规CSP规则
  • CustomResponse动作:完整保留原3xx响应的状态码、描述,只追加CSP头,不改变跳转逻辑

验证方法

配置生效后,用curl或浏览器开发者工具测试目标子路径的3xx跳转:

curl -I http://your-domain.com/your-target-subpath/any-redirect-url

查看响应头是否包含Content-Security-Policy字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:19:55