【问题标题】:Do browsers use resource hint (Link) headers in redirect responses?浏览器是否在重定向响应中使用资源提示(链接)标头?
【发布时间】:2019-08-18 05:58:36
【问题描述】:

问题

我有一个网站,它使用 302 重定向为新访问者建立新会话。我在我的个人网站上创建了一个基本流程的演示:

  1. https://crenshaw.dev/redirect/index.php (302)
  2. https://crenshaw.dev/session/redirect/index.html (200)

index.html 使用资源https://mac9416.com/demos/style.css(我只需要一个外部域名)。

我想指示浏览器连接到mac9416.com的302而不是200。

可能的解决方案

某些浏览器支持资源提示标头。下面是一些例子:

示例 5

链接:https://widget.com; rel=dns 预取
链接:https://example.com;相对=预连接
链接:https://example.com/next-page.html; rel=prerender;
链接:https://example.com/logo-hires.jpg;相对=预取; as=图像;

出了什么问题

开发工具在初始请求中显示 Link 标头:

我看到在 200 之后建立了与 mac9416.com 的连接,就在下载资源之前。

我希望看到在 302 之后立即建立连接,或者只是从时间线中丢失。

我使用 Chrome 73 进行了测试。WebPageTest waterfall 看起来几乎一模一样。

注意:我对服务器推送解决方案感兴趣,但目前该网站运行的是 HTTP1.1。

问题

我是否正在尝试一些甚至不受支持的东西?必须仅在非重定向响应上提供资源提示标头吗?

The "Anonymizing redirect" section of the resource hint working draft 让我相信它可以帮助我解决这种情况。但也许我看错了。

许多网站依赖重定向服务来进行分析、恶意软件防护,并在将用户发送到最终目的地之前匿名引荐来源。因为提前知道目的地,所以可以使用预连接提示来启动与目的地来源的连接握手(不泄露任何私人信息),同时处理重定向 - 这掩盖了重定向延迟并减少导航时间最终目的地。

【问题讨论】:

  • 一切似乎有点模糊。您使用了哪个资源提示?哪个浏览器?你能给出完整的瀑布图吗?理想情况下是公共网站和网页测试结果。我认为浏览器没有正式声明他们是否接受这些重定向,因此测试将是确认的最佳方式。
  • @BarryPollard 公平积分。 1)预连接,2)Chrome 73,3)我将尝试在我的个人网站上设置一个示例,并在今晚发布 WPT 结果。
  • @BarryPollard 更新了演示。

标签: http-headers web-performance


【解决方案1】:

嗯,我检查了你的实验(感谢你提出这个问题!)并且看不出有什么问题。我自己也在自己的服务器上重复了一遍,可以确认您的发现:主流浏览器似乎都不支持跨页面重定向的资源提示。

关于你指出的规范草案中的段落,我可以想到两种解释:

  1. 一个潜在的用例,浏览器只是不支持它(还)。
  2. 此措辞更适用于当前页面上必须首先通过重定向的资源。因此,例如,如果当前页面 (index.html) 加载 www.example.com/latest/framework.js 并重定向到 cdn.example.com/latest/framework.js 以实际加载此资源。值得注意的是,只有 prefetch 和 prerender 明确指出它们是用于“下一个导航”的(尽管我出于兴趣尝试了这两个,但它们也不适用于重定向场景)。

无论哪种方式,我都同意它可以更清楚。我打算建议在 Github 上打开一个问题,但请参阅 you already did that!希望规范作者能够证实这一点。

顺便说一句,我尝试使用 JavaScript 重定向而不是 301/302,它在 Chrome 中适用于预连接的 HTTP 链接标头和 HTML 链接指令 - 再次表明仅查看 200 个响应以获取资源提示。

你提出的一个有趣的问题!不确定 StackOverflow 是否偏离主题,但肯定激起了我的兴趣...

【讨论】:

  • 感谢您的浏览,尤其是您试用 JavaScript 替代方案!对于我想要在其上实现的 actual 站点来说,这条路线有点棘手。所以希望浏览器尽快实现 301/302 的提示。
  • NP。 JavaScript 重定向很糟糕,恕我直言,不应该使用它们,所以不要提倡它们。 More 出于兴趣和证实怀疑。
  • 顺便说一句,JS 重定向的缺点是什么?我同意他们觉得恶心,只是想知道具体的问题是什么。
  • 如果我的脑袋:1) 需要启用 Javascript,2) 对 SEO 不利,3) 它说页面已加载 (200) 而不是。对于像我这样的强迫症怪人来说可能更多的是一个小问题,但也可能会破坏其他工具 4)它更慢,因为需要执行 JavaScript 5)如果重定向是基于用户输入的,那么可能是安全问题。基本上它归结为这样一个事实,即 HTTP 有一个更好的方法,并且一直都有(HTTP/0.9 除外),而 JavaScript 方法是一个 hack(就像很多 JavaScript - 是的,我去了那里!!):-)
  • 我怀疑 JS 示例的工作原理是浏览器必须实例化一个文档,而在位置标头的情况下,浏览器只是提前重定向查看@MichaelCrenshaw 测试用例的 Chrome 网络日志,Chrome甚至不尝试与 CSS 域建立连接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多