浏览器是否在重定向响应中使用资源提示(链接)标头?

时间:2019-03-27 15:36:03

标签: http-headers web-performance

问题

我有一个站点,该站点使用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(我只需要一个外部域名)。

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

潜在解决方案

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

  

示例5

     

链接:https://widget.com; rel = dns-prefetch
  链接:https://example.com; rel = preconnect
  链接:https://example.com/next-page.html; rel = prerender;
  链接:https://example.com/logo-hires.jpg; rel = prefetch; as = image;

出了什么问题

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

Link header

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

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

Connection portion of dev tools network timeline

我使用Chrome 73进行了测试。WebPageTest waterfall看起来几乎完全相同。

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

问题

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

The "Anonymizing redirect" section of the resource hint working draft使我相信,这完全可以帮助解决我的这种情况。但是也许我读错了。

  

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

1 个答案:

答案 0 :(得分: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个响应以获取资源提示。 Resource hint on Javascript redirect

您提出了一个有趣的问题!不知道是否是StackOverflow的主题,但肯定激起了我的兴趣...