首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当Web.config元素已经包含不同的xdt时,如何使用xdt-transform

当Web.config元素已经包含不同的xdt时,如何使用xdt-transform
EN

Stack Overflow用户
提问于 2021-09-16 07:52:04
回答 2查看 229关注 0票数 1

使用Visual Web.Config转换,我希望在Web.Debug.Config中包含以下行:<add source="*.amazonaws.com" />

这是我的Web.config

代码语言:javascript
复制
<configuration>
  <!--
    -- More config here
  -->
  <nwebsec>
    <httpHeaderSecurityModule xmlns="http://nwebsec.com/HttpHeaderSecurityModuleConfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="NWebsecConfig/HttpHeaderSecurityModuleConfig.xsd">
      <securityHttpHeaders>
        <content-Security-Policy enabled="true">
          <default-src none="true" />
          <script-src self="true" unsafeEval="true">
            <add source="https://cdnjs.cloudflare.com"/>
          </script-src>
          <style-src unsafeInline="true" self="true">
            <add source="https://cdnjs.cloudflare.com"/>
          </style-src>
          <img-src self="true">
            <add source="data:" />
            <add source="*.w3.org"/>
            <!-- ******** I want to insert new source here for Dev ******** -->
          </img-src>
          <object-src none="true" />
          <media-src none="true" />
          <frame-ancestors none="true" />
          <report-uri enableBuiltinHandler="true"/>
        </content-Security-Policy>
      </securityHttpHeaders>
    </httpHeaderSecurityModule>
  </nwebsec>
</configuration>

我在Web.Debug.config中做了建议的Web.Debug.config:

代码语言:javascript
复制
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web></system.web>
  <nwebsec>
    <httpHeaderSecurityModule> <!-- I have remove xmlns=... from this element -->
      <securityHttpHeaders>
        <content-Security-Policy enabled="true">
          <img-src self="true" xdt:Transform="Remove" />
          <img-src self="true" xdt:Transform="InsertIfMissing">
            <add source="data:" />
            <add source="*.w3.org"/>
            <add source="*.amazonaws.com" />
          </connect-src>
        </content-Security-Policy>
      </securityHttpHeaders>
    </httpHeaderSecurityModule>
  </nwebsec>
</configuration>

但是新的行没有增加,我该怎么做呢?

我认为这是因为httpHeaderSecurityModulexmlns属性,但不知道如何解决这个问题?

注意,我已经从转换文件中的xmlns=...中删除了httpHeaderSecurityModule,如果我包含了名称空间,就会得到以下语法错误:

http://schemas.microsoft.com/XML-Document-Transform:Transform”属性未声明

EN

回答 2

Stack Overflow用户

发布于 2021-09-17 01:07:42

我不确定是否有更好的解决方案,但根据httpHeaderSecurityModule (有xmlns=...)元素,我无法让转换在MS文档中工作。

转换文件的根元素必须在其开始标记中指定XML文档转换命名空间。

实现此转换的唯一方法是替换具有xmlns的元素之上的所有内容,即

代码语言:javascript
复制
  <nwebsec xdt:Transform="Remove" />
  <nwebsec xdt:Transform="InsertIfMissing">
    <httpHeaderSecurityModule xmlns="http://nwebsec.com/HttpHeaderSecurityModuleConfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="NWebsecConfig/HttpHeaderSecurityModuleConfig.xsd">
      <securityHttpHeaders>
        <content-Security-Policy enabled="true">
          <default-src none="true" />
          <script-src self="true" unsafeEval="true">
            <add source="https://cdnjs.cloudflare.com"/>
          </script-src>
          <style-src unsafeInline="true" self="true">
            <add source="https://cdnjs.cloudflare.com"/>
          </style-src>
          <img-src self="true">
            <add source="data:" />
            <add source="*.w3.org"/>
            <!-- ******** I want to insert new source here for Dev ******** -->
          </img-src>
          <object-src none="true" />
          <media-src none="true" />
          <frame-ancestors none="true" />
          <report-uri enableBuiltinHandler="true"/>
        </content-Security-Policy>
      </securityHttpHeaders>
    </httpHeaderSecurityModule>
  </nwebsec>
票数 1
EN

Stack Overflow用户

发布于 2022-03-02 08:36:41

另一种选择是使用单独的配置文件,而不是完全转换。你可以这样做:

代码语言:javascript
复制
<nwebsec xdt:Transform="Remove" />
  <nwebsec xdt:Transform="InsertIfMissing">
  <httpHeaderSecurityModule configSource="NWebsec.config" >
  </httpHeaderSecurityModule>
</nwebsec>

不幸的是,您不能直接使用nwebsec元素(看这里为什么)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69204408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档