REMOTE_ADDR 在 运行 XSLT 时消失
REMOTE_ADDR disappears when running XSLT
我为我的网站创建了一个阻止规则,我在其中列出了一些允许访问我网站的管理页面的 IP 地址。
条件如下所示:
<xsl:template match="/configuration/system.webServer/rewrite/rules/rule[@name='adminBlockRule']">
<xsl:comment>Blockera Admin för alla utom vissa IP-adresser</xsl:comment>
<rule name="adminBlockRule" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^(Admin/|Sysadmin/).*$" ignoreCase="true"/>
<conditions>
<xsl:comment>Generell</xsl:comment>
<add input="{REMOTE_ADDR}" pattern="10.*.*.*" negate="true" />
<add input="{REMOTE_ADDR}" pattern="194.103.31.*" negate="true" />
... More rules
</conditions>
<action type="AbortRequest" />
</rule>
<xsl:comment>Hit</xsl:comment>
</xsl:template>
当我将它放入我的 web.config 文件时它工作正常,但是当我将它放入我的 web.production.config 文件并使用 XSLT 运行 它删除了“{REMOTE_ADDR}" 所以输出看起来像这样:
<rule name="adminBlockRule" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^(Admin/|Sysadmin/).*$" ignoreCase="true" />
<conditions>
<!--Generell-->
<add input="" pattern="10.*.*.*" negate="true" />
<add input="" pattern="194.103.31.*" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule>
有人知道如何解决这个问题吗?
我使用的版本:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:saml="urn:dk.nita.saml20.configuration"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl saml">
<xsl:output method="xml"
indent="yes"/>
<xsl:strip-space elements="*"/>
我通过在输入参数中添加一对额外的“{}”解决了我的问题,并且成功了。
新条件如下所示:
<add input="{{REMOTE_ADDR}}" pattern="10.*.*.*" negate="true" />
<add input="{{REMOTE_ADDR}}" pattern="194.103.31.*" negate="true" />
我为我的网站创建了一个阻止规则,我在其中列出了一些允许访问我网站的管理页面的 IP 地址。 条件如下所示:
<xsl:template match="/configuration/system.webServer/rewrite/rules/rule[@name='adminBlockRule']">
<xsl:comment>Blockera Admin för alla utom vissa IP-adresser</xsl:comment>
<rule name="adminBlockRule" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^(Admin/|Sysadmin/).*$" ignoreCase="true"/>
<conditions>
<xsl:comment>Generell</xsl:comment>
<add input="{REMOTE_ADDR}" pattern="10.*.*.*" negate="true" />
<add input="{REMOTE_ADDR}" pattern="194.103.31.*" negate="true" />
... More rules
</conditions>
<action type="AbortRequest" />
</rule>
<xsl:comment>Hit</xsl:comment>
</xsl:template>
当我将它放入我的 web.config 文件时它工作正常,但是当我将它放入我的 web.production.config 文件并使用 XSLT 运行 它删除了“{REMOTE_ADDR}" 所以输出看起来像这样:
<rule name="adminBlockRule" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^(Admin/|Sysadmin/).*$" ignoreCase="true" />
<conditions>
<!--Generell-->
<add input="" pattern="10.*.*.*" negate="true" />
<add input="" pattern="194.103.31.*" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule>
有人知道如何解决这个问题吗?
我使用的版本:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:saml="urn:dk.nita.saml20.configuration"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl saml">
<xsl:output method="xml"
indent="yes"/>
<xsl:strip-space elements="*"/>
我通过在输入参数中添加一对额外的“{}”解决了我的问题,并且成功了。 新条件如下所示:
<add input="{{REMOTE_ADDR}}" pattern="10.*.*.*" negate="true" />
<add input="{{REMOTE_ADDR}}" pattern="194.103.31.*" negate="true" />