【问题标题】:How does my browser convert my http request to https?我的浏览器如何将我的 http 请求转换为 https?
【发布时间】:2010-10-07 15:06:14
【问题描述】:

朋友们,我想知道安全托管何时完成,我们需要一个唯一的 IP 地址来关联我们的 SSL 证书。另外,我在一个教程中读到,当浏览器请求安全连接时,所有 SSL 进程都会启动。但是浏览器如何请求安全连接。我们不只是写 www.chase.com 吗?然后我们的浏览器将http转换为https?后台发生了什么?

【问题讨论】:

  • http://www.chase.com 重定向到https://www.chase.com。我猜它是permanent redirect(HTTP 状态代码 301)。重定向消息来自服务器,而不是浏览器。
  • 嘿亲密的选民。英语不好不是结束问题的理由。通读答案和vinayvasyani cmets,以更清楚地了解他在寻找什么。

标签: http redirect https


【解决方案1】:

逐步(假设 HSTS 标头 处于活动状态,它将自动使用 https 而无需http 请求):

  1. 客户端在地址栏中输入 www.example.com
  2. 浏览器采用 HTTP 协议并向 www.example.com 发送 GET 调用
  3. www.example.com 以移动的状态代码响应并提供新位置:

    HTTP/1.1 301 永久移动
    位置:https://www.example.com/

  4. 浏览器读取该信息并知道它必须启动安全 HTTPS 连接。

  5. ...等等。这就是事情变得更加复杂的地方,因为浏览器和服务器会交换多条消息,直到建立安全连接。

无论如何,如果您需要安装 SSL / TLS 证书,您必须确保您的客户端从 HTTP 重定向到 HTTPS。这应该通过服务器配置来完成。

【讨论】:

  • 好答案Alin Purcaru...我试图给出“编程”答案以防止这个问题被关闭...;-)
【解决方案2】:

在您的编程代码中,您评估协议并使用301(服务器端)进行重定向。 这不是在浏览器中完成的

您可以在 ASP.NET 中的 Global.asax 文件中执行此操作
我不确定其他编程语言(PHP、Ruby 等)。其他人可以随意插话,如果愿意,可以用更多示例编辑我的答案。

if(!Request.IsSecureConnection)
{
  string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
  HttpContext.Current.Response.Status = "301 Moved Permanently"; 
  HttpContext.Current.Response.AddHeader("Location", redirectUrl);
}

我认为您可以在 Apache 中使用 .htaccess 默认执行此操作,但据我所知,如果您想在 IIS 中执行此操作,您需要运行一个 asp 脚本或将其包含在您的 .net 应用程序中。我可能是错的,但这是我在试验中遇到的问题。

【讨论】:

  • 你的意思是我应该先检查响应代码,然后如果是 301,那么我应该重定向。
  • 你可以用任何这样的语言来做。您也可以在大多数网络服务器的配置设置中执行此操作,根本不需要编程。
  • @vinayvasyani, 301 重定向。如果您向浏览器发送 301,它将转到另一个 URI。查看 RFC 2616。
  • 除非您尝试构建浏览器,否则您不应该与读取 301 状态代码有任何关系。
  • Jon Hanna 你是对的,这只是一种选择。 vinayvasyani 不,您不检查您评估协议的 301 (if NOT https - then send 301 AND include the https URL)
猜你喜欢
  • 2017-02-09
  • 1970-01-01
  • 2022-09-23
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多