24

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

到目前为止,我有以下内容:

  1. 用户将登录表单发布到安全站点
    • 安全服务器验证凭据
    • 安全服务器向客户端发送 302 重定向

这有效,除了在我的 IE6 机器上,用户会收到一条错误消息,因为默认设置是在退出安全页面时发出警告。这些错误对我来说是一个可用性杀手,因此是一个阻碍。我改变了它,所以第 3 步是

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

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

有没有更好的方法来实现对人们使用的标准设置进行无忧重定向的目标?IE6 占我们流量的 20%-25%。另外,有没有人知道哪些浏览器会发出警告,哪些浏览器不会发出 302 重定向警告?我正在考虑将 IE6 列入黑名单,以便只有它获得缓慢的元刷新,而其他所有人都获得快速的 302。

4

3 回答 3

11

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

在没有警告消息的情况下将 https 移动到 http 的一种方法是使用 javascript 使用客户端重定向。

脚步

  1. 用户在 https 表单上输入登录详细信息,然后单击登录按钮
  2. 登录按钮将发回 https 表单以进行登录验证(假设登录正确)将重定向到也在 https 下的保留页面并显示消息(请等待站点重定向您)
  3. 此保留页面执行 javascript 重定向到 http 页面

不会显示浏览器警告消息

高温高压

于 2010-09-24T06:22:20.513 回答
5

我正在考虑将 IE6 列入黑名单,以便只有它获得缓慢的元刷新,而其他所有人都获得快速的 302。

我会做这样的事情。还在正文中包含一个纯 HTML 链接以方便访问。

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

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

您不应该 302 响应 POST。一个认真对待 HTTP RFC 的理论浏览器可能会通过将表单重新发布到新 URL 来响应这一点。(具有讽刺意味的是,这将使 IE6 关于信息“被重新传输到非安全站点”的警告不那么具有误导性。)改为使用“303 See other”。

于 2009-03-17T05:06:35.850 回答
2

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

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

于 2009-03-16T19:20:49.017 回答