質問: Chromeを使いGoogleでwindowsと検索すると下記のURLで検索結果が表示されます。 ``` https://www.google.co.jp/#q=windows ``` 私の中では、検索はGETを使い、クエリ文字列を付与することで検索結果を表示しているという認識でおります。 クエリとは「RFC3986(日本語)」で下記のようにある通り、URLに末尾に`?`を付けて指定するものという認識でおりました。 > > query 構成要素は、path 構成要素 (Section 3.3) のデータを伴い、その URI のスキームと (存在する場合は) 命名オーソリティの範囲内のリソースを識別するために利用される。 query 構成要素は、最初の疑問符 ("?") 文字によって始まり、数字記号 ("#") 文字、あるいは URI の終わりによって終結する。 > > > そのため、Googleで検索したときは下記のようにURLの末尾は`?`から始まるかと思っておりましたが、`?`はなく`#`で始まっております。 ``` https://www.google.co.jp/?q=windows ``` なぜ、`?`がないのでしょうか。 私のクエリに関する認識に誤りがあり、必ず`?`から始まる必要はないということでしょうか。 また、`#`で始める意味も教えて頂けると嬉しいです。 参考サイトでも結構ですので教えてくださいm(__)m
回答: URL用語としての「クエリ」はお書きの引用の通りです。 `#`以降は「フラグメント」で、本来はページ内のアンカーで指定された場所を示し、ブラウザからサーバーにリクエストを送る際には削除して送られます。 JavaScriptでは現在のURLのフラグメント部分も取得できるので、あとはJavaScriptでAJaxで処理します。 `#`以降を変更してもサーバーで認識するURLは変わらないため、URLを書き換えてもページ遷移を起こさないために使っているのだと思います。検索画面の場合だとあまり使う必要性を感じませんが。