如何在没有恼人的错误消息的情况下从HTTPS重定向到HTTP

时间:2009-03-16 19:15:26

标签: http redirect https http-status-code-302

我想在HTTPS登录后将用户重定向到网站上的HTTP页面。不会在整个网站上使用HTTPS。

到目前为止我的内容如下:

  1. 用户将登录表单发布到安全站点
    • 安全服务器验证凭据
    • 安全服务器向客户端发送302重定向
  2. 这是有效的,除了在IE6中的我的机器上,用户收到错误消息,因为默认是在退出安全页面时发出警告。这些错误对我来说是一个可用性杀手,因而是一个显而易见的问题。我更改了它,以便第3步

    • 服务器发送带有元刷新的HTML代码

    但这很慢;即使在我的本地机器上它也明显慢于302重定向。

    有没有更好的方法来实现人们使用的标准设置上无障碍重定向的目标? IE6占我们流量的20%-25%。此外,是否有人有任何关于哪些浏览器会发出警告以及哪些浏览器不会警告302重定向的好信息?我正在考虑黑名单IE6,这样只有它获得缓慢的元刷新,其他人都获得了快速的302.

3 个答案:

答案 0 :(得分:11)

恢复旧主题,但要使其能够发布以下内容,以便其他开发人员可以选择实施

将https转换为http而没有警告消息的一种方法是使用javascript使用客户端重定向。

步骤

  1. 用户在https表单上输入登录详细信息,然后单击登录按钮
  2. 登录按钮将回发到https表单进行登录验证(假设登录正确)将重定向到保持页面,该页面也在https下并显示消息(请在网站重定向时等待)
  3. 此暂存页面将javascript重定向到http页面
  4. 不会显示任何浏览器警告消息

    HTH

答案 1 :(得分:5)

  

我正在考虑将IE6列入黑名单,这样只有它才能获得缓慢的元刷新,而其他所有人都会获得快速的302.

我会做那样的事情。还包括正文中的纯HTML链接以便访问。

请注意,其他一些浏览器确实提供了关于离开HTTPS站点的类似警告,但在他们的情况下,它伴随着(通常是预先勾选的)“不要再问我”按钮。因此,当他们到达您的网站时,他们几乎肯定会告诉警告消失。这并不会使警告毫无意义,但至少可以缓解这个问题。

  
      
  1. 安全服务器向客户端发送302重定向
  2.   

你不应该回应POST。认真对待HTTP RFC的理论浏览器可能会通过将表单重新发布到新URL来响应。 (具有讽刺意味的是,这会使IE6对有关信息的警告“重新传输到不安全的网站”的误导性较小。)而是使用“303见其他”。

答案 2 :(得分:2)

我认为没有其他办法。该错误消息是为了用户的利益,现在也出现在IE 7和Firefox 3中。我知道防止它的唯一方法是在浏览器中将您的网站添加为可信任的。

更新:哦,所以这不是混合内容错误。我知道你的意思,尽管我仍然认为你不能禁用错误。通常,安全错误是为了保护用户免受潜在危险站点的侵害,因此不能被(可能不安全的)网站本身禁用。