【问题标题】:SSL and relative URLs in site links and redirections站点链接和重定向中的 SSL 和相对 URL
【发布时间】:2012-08-26 16:11:05
【问题描述】:

我已经在一个处于测试阶段的网站上工作了一段时间,终于要推出它了。整个网站有几个链接、锚标记和相对 URL,它们链接到网站的管理员和购物车部分,现在它们必须受到 SSL 保护。

另外,Response.Redirect("~/../.."); 中的相对 URL 也有同样的问题

当用户浏览 http 时,是否可以使用相对 URL 将他们重定向到具有 https 连接的页面?为了 SSL 的目的,为链接和重定向编写绝对 URL 似乎是一种不好的做法。如果域名更改,我必须全部重写。另外,如果我想让它们在我的本地主机上工作,我每次上传到服务器时都必须更改它们。一定有办法。

【问题讨论】:

  • 您的观点是,当它不应该真正成为问题时,必须重写绝对 URI 中的主机名。当您的内容是静态的时,这主要是一个问题,但您在这里使用的是框架。任何体面的现代 Web 编程框架都应该让您从请求中获取请求的主机,并在需要时自动插入以构建绝对 URL:"https://" + Request.getHostName() + "/" + relativeURL 之类的东西(这只是伪语法,您可能需要弄清楚细节)。自动重写也有some problems

标签: asp.net redirect ssl hyperlink relative-path


【解决方案1】:

根据您运行的 IIS 版本,您始终可以将此功能卸载到网络服务器。查看 URL 重写模块 here.

【讨论】:

    【解决方案2】:

    Rick Strahl 的这些辅助方法可以帮助您

    http://www.west-wind.com/weblog/posts/2007/Sep/18/ResolveUrl-without-Page

    特别注意 ResolveServerUrl。

    【讨论】:

      【解决方案3】:

      Switching Between HTTP and HTTPS Automatically 是一个非常好的代码,可用于快速轻松地实现切换逻辑 - 而无需更改现有代码。

      类似:Preparing my ASP.NET / MVC site to use SSL?

      【讨论】:

      • 我喜欢这个解决方案,并在过去的几天里实现了它,但发现我不能通过 IIS 使用这个解决方案来要求 SSL。当服务器使用此 http 模块在 http 和 https 之间自动切换时,如果在 IIS 中将文件或目录设置为需要 ssl,我会收到错误消息“必须通过安全通道查看该页面”,因为它最初没有发送过来https。但是,当我从 IIS 中删除此要求时,该模块可以正常工作并将页面加载为 https...
      • 但是,如果可能的话,我相信我们希望在 IIS 中为额外的安全层设置要求。有没有办法使用这个模块来实现这个?还是让程序启动https 连接并且没有在 IIS 中有 ssl 要求是否合适?
      • @Shredder 我不知道如何做一个直接在 IIS 上运行的模块,以前从未做过。你可以用那个模块做的是你可以把它编译为 asp.net dll,然后把它放在 asp.net 的机器配置上——这使它在 asp.net 的所有站点上默认运行
      • IIS 上没有模块。我只将某些特定目录配置为“需要安全通道”。当我有这个设置时,这个模块不起作用。我应该没有这个设置,还是有一些解决方法?
      猜你喜欢
      • 2015-07-18
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 2017-02-05
      • 2022-07-29
      • 2022-07-07
      相关资源
      最近更新 更多