asp.net - 根据传入的 IP 地址绕过 web.config 文件中的规则
问题描述
我已经尝试了 6 个小时的解决方案来解决这个问题,但在堆栈或微软的开发博客上都找不到任何东西。当通过内部调用访问网站时,我试图强制从所有外部调用到我的网站的 HTTPS 重定向,同时仍然访问 HTTP 站点,在这种情况下,通过使用 URL 栏中的 IP 地址 192.168.8.68浏览器。直到我们昨天安装了 SSL 证书并实施了以下重定向规则,这才完美运行:
<rule name="Redirect to HTTPS" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>
我想知道的是,如果传入的 IP 地址具有这种形式,我将如何绕过它192.168.8.*
?在正则表达式中添加特定 iP 会导致网站无法加载并出现“重定向错误过多”。为了解决这个问题,我已经查看了以下问题列表:
https://forums.iis.net/t/1166994.aspx?Rewrite+Redirection+for+only+external+users
IIS 7.5 使用 ip 地址将某些请求重定向到其他服务器
信息系统 | 阻止特定于特定内部 IP 地址的页面特定 URL
https://docs.secureauth.com/display/KBA/Use+URL+Rewrite+for+IP+Restrictions
解决方案
您可以使用此规则绕过来自 ip 192.168.8.* 的请求。
<rule name="Redirect to HTTPS" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="OFF" />
<add input="{REMOTE_ADDR}" pattern="192\.168\.8\.[0-9]+" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
推荐阅读
- c# - 没有 AssemblyInfo 的 Visual Studio 项目
- postgis - PostGIS ST_Distance_Spheroid 或 Haversine
- android - 如何以编程方式在 ViewPager 中设置选项卡的数量及其各自的标签?
- c# - 如何编写允许任一索赔的政策
- excel - 如何在索引函数中创建变量范围?
- google-apps-script - 如果 2 个单元格匹配,Google 脚本会创建警报
- reactjs - 是什么让我们的 Action Creator 在 React 中作为道具可用?
- google-cloud-platform - Google Cloud IoT 频繁从云功能向设备发送配置更新时,几乎没有丢失配置更新消息
- vhdl - 在命令行上使用 modelsim 进行分层编译顺序
- neo4j - 如何将属性设置为第一个属性(在 Neo4j 浏览器的节点上显示)