ASP.NET - 将所有 https 请求重写为 http

2024-05-25

我的问题正是所提出的问题here https://stackoverflow.com/questions/16276860/iis-7-adding-ssl-to-one-site-all-other-sites-responds-to-https-request,我决定尝试将所有 https 请求重写为 http。我已经进行了长期而艰苦的搜索,但似乎没有一个明确的方法来实现这一目标 - 请参阅这些问题(没有解决方案):使用 Web 配置文件中的重写规则将 https 重定向到 http https://stackoverflow.com/questions/18109047/redirect-https-to-http-using-rewrite-rule-in-webconfig-file ; https://stackoverflow.com/questions/15214717/iis-rewrite-https-to-http-whilst-keeping-existing-https-rules https://stackoverflow.com/questions/15214717/iis-rewrite-https-to-http-whilst-keeping-existing-https-rules

我已将重写模块添加到 IIS,并在 web.config 中尝试了以下操作:

<rewrite>
  <rules>
    <clear />
    <rule name="force http" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

但它仍然允许用户用 https 访问非 https 站点(本质上是访问不同的站点)。

如何强制所有 https 请求都变成 http 请求?

edit:我也尝试过所有建议的解决方案here https://stackoverflow.com/questions/1536120/rewriting-urls-from-https-to-http-in-iis7没有运气。 url重写模块肯定已经成功安装在IIS上了!

edit2:尝试了以下方法但没有成功:

<system.webServer>
<rewrite>
  <rules>
    <clear />
    <rule name="force http" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTPS}" pattern="on" ignoreCase="true" />
        <add input="{HTTP_HOST}" pattern="^(?:www)?\.test.site\.com$"
            negate="true" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}"
            redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>
</system.webServer>

我重新启动了 IIS,重写规则反映在 inetmgr 中。加载中https://test.site.com/仍然加载 https。


有几件事。首先,重写需要在 HTTPS 打开而不是关闭时进行处理。其次,对于需要通过 HTTPS 运行的应用程序,您需要将其从重写中排除。修改后的重写规则应如下所示:

<rewrite>
  <rules>
    <clear />
    <rule name="force http" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTPS}" pattern="on" ignoreCase="true" />
        <add input="{HTTP_HOST}" pattern="^example\.com$" 
            negate="true" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" 
            redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

这应该保留https://example.com/loginhttps 和所有其他 URL 将被重定向到 http。例如,https://test.example.com/login将被重定向到http://test.example.com/login。此重写规则需要放置在具有 HTTPS 绑定的站点上,以便重写正常工作。

请注意,使用 301 永久重定向时,某些浏览器不会在后续点击时向服务器发出请求,因此更改规则后需要清除浏览器缓存。网络选项卡甚至可能撒谎并说已发出请求,但 Fiddler 或 Wireshark 等外部工具会让您确定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET - 将所有 https 请求重写为 http 的相关文章

随机推荐

  • 使用 toast 显示来自 catch 语句的错误消息

    我的 Android 应用程序中有以下 catch 语句 我想通过 toast 显示任何错误消息 我可以这样做吗 catch Exception e Helper displayExceptionMessage this e getMess
  • FFMPEG波形透明,背景纯色

    我正在尝试使用 ffmpeg 生成波形 我希望背景为纯色 实际波形为透明 以下部分实现了我想要的 除了有黑色背景 我希望能够将其更改为任何颜色 但波形是透明的 我怎样才能用 ffmepg 实现这个目标 ffmpeg i input mp3
  • Spring Security匿名用户可以访问每个url

    我正在开发 gwt 应用程序 我想使用 spring security 来保护它 我在数据库中有用户数据 UserService 负责获取特定用户 我已经关注了这个tutorial http www javacodegeeks com 20
  • 如何使用 --build 选项查看 cmake 发出的命令

    当我运行 cmake build target INSTALL 命令时 如何查看发出的命令 似乎没有像 versbose之类的选项 cmake 帮助说 cmake build 是底层构建工具的接口 但没有说明有关发出的命令转储的任何内容 我
  • 使用 PHP 读取 cookie

    我正在尝试读取我用 javascript 设置的 cookie 特别是 jQuery Cookie 插件 然后我用 PHP 读取它以将其写入数据库 由于某种原因 cookie 是在页面加载时创建的 但在页面刷新之前并不 存在 这意味着我正在
  • 在 Java 中使用 Scala 常量

    我目前正在评估 Scala 的未来项目 并发现了一些奇怪的事情 我在 JSP 中为我们创建了以下常量 val FORMATED TIME formatedTime 但这没有用 经过一番尝试后 我决定反编译以了解其真相 private fin
  • 未捕获的类型错误:对象 [object Object] 没有方法“自动完成”

    我不断收到错误 未捕获类型错误 对象 对象对象 没有方法 自动完成 它工作得很好 直到几天前我似乎找不到问题 似乎 jquery ui 正在加载 所以我不明白为什么该方法不起作用 My code
  • Google API 令牌端点 POST 返回错误请求 400

    我正在尝试用一次性 Google Plus 授权代码换取访问令牌 但我不断收到 400 Bad Request 我正在使用VB NET 这是代码 We should now have a good one time authorizatio
  • 从数据库中删除样式 (SQL Server)

    我正在处理旧的数据库表 其中有附加了 CSS 的值 例如 font size 4 Select your gender font font size 4 Select your country font 除了一次删除一个样式之外 还有什么方
  • 如何更改 Sublime Text 3 中缩进指南选项的颜色?

    如何更改缩进引导线颜色 您需要编辑您正在使用的配色方案的配色方案文件 并找到
  • 使用 dplyr 对 R 中所有因变量进行分组汇总统计

    我正在尝试为 10 个因变量中的每一个生成分组 听力 我的自变量 因此 HL 和 NH 是两个组 汇总统计数据 平均值 标准差 最小值 最大值 标准误差等 我可以使用以下 2 个代码对一个变量 R PTA 执行此操作 1 RightPTA
  • 如何使用 graph api 获取粉丝页面的点赞数?

    如何使用 graph api 获取粉丝页面的点赞数 早些时候它在这里 https graph facebook com FANPAGE ID access token ACCESS TOKEN https graph facebook co
  • SQL Server 中的 FOR XML 路径

    注意 我已经解决了这个问题的大部分 但遇到了障碍 请读到底部 您将看到我在哪里添加了 注意 部分 TIA I have a rather extensive join query that I want dumped to XML I ha
  • YouTube iframe 嵌入 - 全屏

    我有一个嵌入网页的表单 填写完表格后 将使用 iframe 嵌入显示 YouTube 视频 当我进入 YouTube 视频的全屏模式时 什么也没有发生 嵌套 iframe 的全屏是否受到父 iframe 尺寸的限制 在当前的 YouTube
  • 让浏览器缓存我的动态 PHP 样式表

    我想在 PHP 文件 styles php 中创建一个样式表 以便样式表变得动态 具体取决于请求的用户 对于每个单独的用户来说 样式表是不变的 因此应该缓存在他的客户端浏览器上 我读过 您可以通过设置内容类型和缓存控制等标头来实现此目的 但
  • C++11:atomic::compare_exchange_weak 是否支持非原始类型?

    我有以下代码 include
  • 平静的 POST 响应的“最佳”实践

    所以这里没有什么新内容 我只是想得到一些澄清 似乎在其他帖子中找不到任何澄清 我正在平静地创建一个新资源 说 books POST 与身体 title The Lion the Witch and the Wardrobe author C
  • AngularJs 路由提供者 404

    下面的代码来自 AngularJs 教程 我稍作修改 我希望从 url 中删除哈希值 我实际上成功了 但现在我有其他问题 当我使用链接本地主机时 它工作得很好并将我重定向到本地主机 电话 但万一我尝试直接链接 localhost phone
  • 执行 SELECT 或 INSERT

    我想写一些类似的东西CASE以我想要的方式在 PostgreSQL 中声明SELECT从表中 如果什么也没找到 我想INSERT改为放入表中 我的示例表allocated ideas看起来像这样 challenge id user id i
  • ASP.NET - 将所有 https 请求重写为 http

    我的问题正是所提出的问题here https stackoverflow com questions 16276860 iis 7 adding ssl to one site all other sites responds to htt