gpt4 book ai didi

asp.net - 为特定站点强制执行 ssl,但不为另一个站点强制执行 ssl

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:48 24 4
gpt4 key购买 nike

我在同一台服务器上托管了一个站点和该站点的测试版本。我希望实时版本使用 ssl 而不是测试版本。我使用以下代码为实时而非测试强制执行 SSL:

 If HttpContext.Current.Request.IsSecureConnection.Equals(False) AndAlso HttpContext.Current.Request.IsLocal.Equals(False) AndAlso HttpContext.Current.Request.RawUrl.Contains("test.mydomain.com") = False Then

Response.Redirect("https://" + Request.ServerVariables("HTTP_HOST") + HttpContext.Current.Request.RawUrl)
End If

网站的实时版本是 live.mydomain.com

我得到的结果是对 test.mydomain.com 的任何请求都会转到 live.mydomain.com。我不知道这怎么可能。浏览器实际上在地址字段中显示 test.mydomain.com 但显然使用的是实时版本。 test.mydomain.com 没有 SSL 绑定(bind)。我在这上面花了几天时间,想知道是否有人知道我的代码有什么问题,或者我还可以尝试什么。

提前致谢

最佳答案

您可以在 IIS 中(无需应用程序中的任何代码)通过使用 IIS7 URL Rewrite module 重写 URL 来执行此操作.

对于此类事情,这是一个非常有用的资源:http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/

您要做的是 (3) 和 (4) 的组合。

所以它说如果请求不是通过 HTTPS 传入并且主机名是 live.domain.com THEN 重定向到 HTTPS。

像这样:

<rule name="Redirect to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" negate="true" pattern="live\.mydomain\.com$" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

关于asp.net - 为特定站点强制执行 ssl,但不为另一个站点强制执行 ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19515173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com