2017-03-28 14 views
0

https://www.google.comの検索テキストボックスにクエリjavaを入力しました。 1つの結果はhttps://en.wikipedia.org/wiki/Java_(programming_language)です。リンクを右クリックしてCopy Link Addressを選択すると、次のテキストが表示されます。Googleはどのように検索結果をリダイレクトしますか?

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

そして私はクロームのアドレスバーに上記のリンクを貼り付けます。そして私はDeveloper Toolsを使ってHTTPネットワークトラフィックを監視します。

enter image description here

最初のHTTPリクエストは、元のリンクのためのものです。ステータスコードが302のHTTPレスポンスでは、Locationヘッダーのリンクに従っていることがわかりましたが、Chromeはhttps://en.wikipedia.org/wiki/Java_(programming_language)に対して次のリクエストを行います。しかしこの場合リダイレクトはどのようにステータスコード200で行われますか?

答えて

1

リダイレクトがあるため、最初のHTTP要求(https://www.google.com/url?sa=t&rct=j...)の応答で行われる:

  • ジャバスクリプトが有効になっている場合、ウィンドウの位置は、スクリプトを使用してhttps://en.wikipedia.org/...にナビゲートされます。

    <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> 
    
    :JavaScriptが無効になっている、またはJavaScriptをサポートしていないクライアントは、その後、<meta http-equiv="refresh">はここhttps://en.wikipedia.org/...

にリダイレクトするために使用されている場合は

  • 最初のHTTPリクエストのレスポンスボディがあります
  • 関連する問題