【问题标题】:How does Google redirect its search results?Google 如何重定向其搜索结果?
【发布时间】:2017-03-28 22:32:58
【问题描述】:

我在https://www.google.com 的搜索文本框中输入了查询java。一个结果是https://en.wikipedia.org/wiki/Java_(programming_language)。我通过右键单击链接并选择Copy Link Address 得到以下文本。

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja&uact=8&ved=0ahUKEwiijvLpqvnSAhVFqY8KHU5UDyYQFghDMAk&url=%68%74%74%70%73%3a%2f%2f%65%6e%2e%77%69%6b%69%70%65%64%69%61%2e%6f%72%67%2f%77%69%6b%69%2f%4a%61%76%61%5f%28%70%72%6f%67%72%61%6d%6d%69%6e%67%5f%6c%61%6e%67%75%61%67%65%29&usg=AFQjCNEaMDPWkK-lszS-jjSYrWuKEdrmKA&bvm=bv.150729734,d.dGc

然后我将上面的链接粘贴到 Chrome 地址栏。我使用Developer Tools 来监控HTTP 网络流量。

第一个 HTTP 请求是针对原始链接的。它的状态码是 200。Chrome 是如何对https://en.wikipedia.org/wiki/Java_(programming_language) 发出以下请求的?我知道带有状态码302 的HTTP 响应可以使浏览器跟随Location 标头中的链接。但是在这种情况下,如何使用状态码 200 完成重定向?

【问题讨论】:

    标签: google-chrome http google-search http-status-code-302


    【解决方案1】:

    重定向完成是因为在第一个 HTTP 请求 (https://www.google.com/url?sa=t&rct=j...) 的响应中:

    • 如果启用了 javascript,则使用脚本将窗口位置导航到 https://en.wikipedia.org/...
    • 如果禁用了javascript,或者客户端不支持javascript,则使用<meta http-equiv="refresh">重定向到https://en.wikipedia.org/...

    这是第一个 HTTP 请求的响应正文:

    <script>window.googleJavaScriptRedirect=1</script>
    <META name="referrer" content="origin">
    <script>var n={navigateTo:function(b,a,d){if(b!=a&&b.google){if(b.google.r){b.google.r=0;b.location.href=d;a.location.replace("about:blank");}}else{a.location.replace(d);}}};n.navigateTo(window.parent,window,"https://en.wikipedia.org/wiki/Java_(programming_language)");
    </script>
    <noscript>
    <META http-equiv="refresh" content="0;URL='https://en.wikipedia.org/wiki/Java_(programming_language)'">
    </noscript>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多