2010-10-07 67 views
4

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

+4

'http:// www.chase.com'重定向到'https:// www.chase.com'。我猜这是一个[永久重定向](http://en.wikipedia.org/wiki/URL_redirection)(HTTP状态码301)。重定向消息来自服务器,而不是浏览器。 – 2010-10-07 15:08:17

+0

嘿关闭选民。破碎的英语不是解决问题的理由。通读答案和[vinayvasyani](http://stackoverflow.com/users/312965/vinayvasyani)评论可以更清楚地了解他在找什么。 – 2010-10-07 16:11:35

回答

10

一步一步:

  1. 客户端类型www.example.com在地址栏中
  2. 浏览器假定HTTP协议并发送GET呼叫www.example.com
  3. WWW .example.com的一个移动的状态码响应,并给出了新的位置:

    HTTP/1.1 301永久移动
    地点:HTTPS://www.example.com/

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

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

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

+0

好的答案[Alin Purcaru](http://stackoverflow.com/users/321468/alin-purcaru)...我试图给出“编程”的答案,以防止这个问题被关闭......; ) – 2010-10-07 15:23:35

3

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

为此,您可以在ASP.NET中Global.asax文件
我不知道其他编程语言(PHP,红宝石等)。如果他们愿意,其他人可以随时留言和编辑我的答案,并提供更多的例子。

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应用程序。我可能是错的,但这是我在这个试验中遇到的问题。

+0

你的意思是我应该首先检查响应代码,然后如果301的话我应该重定向。 – vinayvasyani 2010-10-07 15:27:00

+1

你可以用任何这样的语言来做到这一点。您也可以在大多数网络服务器的配置设置中执行此操作,而无需编程。 – 2010-10-07 15:27:16

+1

@vinayvasyani,301 **是**重定向。如果你发送301到浏览器,它会转到另一个URI。看看RFC 2616. – 2010-10-07 15:28:19

相关问题