0

最近我上了Startup Engineering的课。

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

例如,谷歌使用重定向到www.google.com何时google.com被访问:

> curl -I google.com

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

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

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

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

尽管如此,使用普通重定向应该是有原因的。

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

4

2 回答 2

1

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

于 2013-07-23T14:53:20.987 回答
0

似乎 JavaScript无法更改浏览器地址栏中的地址超出相同来源

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

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

于 2013-07-23T15:06:26.780 回答