【问题标题】:Understanding why plain redirect is used了解为什么使用普通重定向
【发布时间】:2013-07-23 12:26:40
【问题描述】:

最近我在Startup Engineering上课。

在研究 DNS 系统主题时,我发现网站倾向于使用重定向将不同的域名指向主域名。

例如,当访问google.com 时,Google 使用重定向到www.google.com

> curl -I google.com

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
...

据我所知,重定向会减慢速度,因为要获取重定向到何处的信息,信号需要与网络服务器的距离增加一倍,从而增加整体延迟。

我被告知浏览器会缓存重定向信息,以便浏览器立即重定向下一个google.com 查询。但是第一个仍然必须得到服务器关于重定向的响应。

在我看来,我们可以在 DNS 级别实现相同的目标。我知道我们不能有 google.com 的 CNAME 记录导致 www.google.com(因为它会将所有电子邮件 user@google.com 变成 user@www.google.com)。但是我们可以在 DNS 级别使用重定向。或DNS ALIAS。 最后一步,我们可以使用 JavaScript 将浏览器地址栏中的 url 从google.com 更改为www.google.com。 对我而言,这将导致与使用重定向相同的结果,但会避免我们进行重定向,以便我们更快地提供结果页面。

不过,使用普通重定向应该是有原因的。

那么,这是什么原因呢?使用重定向有什么好处?在 DNS 级别重定向有哪些注意事项?

【问题讨论】:

    标签: redirect dns


    【解决方案1】:

    使用重定向是因为 RFC 1912 不允许在 DNS 区域的顶点使用 CNAME 记录。一些 DNS 提供商已经构建了诸如“DNS ALIAS”之类的东西,以在其 DNS 边缘机器上使用服务器端重定向来解析查询,301/302 重定向只是将 HTTP 流量分流到另一个 FQDN 的一种方式。使用 301/302 重定向导致的延迟可能因 DNS 提供商而异。

    【讨论】:

      【解决方案2】:

      看来 JavaScript can't change address in the browser address bar beyond same origin.

      因此,将google.com 更改为www.google.com 的唯一方法是重定向。

      DNS级别的所有重定向和别名都发生在用户DNS服务器端,它将Web服务器的最终IP地址返回给用户。浏览器通过 HTTP 向服务器发送的主机名是 OSI 模型的更高级别。并且 web-server 仍然接收到原始主机名,在浏览器地址栏中更改它的唯一方法是重定向到新的 url。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-06
        • 2013-08-31
        • 2013-08-16
        • 1970-01-01
        • 2012-01-31
        • 2011-12-26
        • 2014-12-20
        • 2019-08-22
        相关资源
        最近更新 更多