web-dev-qa-db-ja.com

パラメータ(疑問符で始まる)のみのlink / hrefは有効ですか?

このリンクは有効ですか?

<a href="?lang=en">eng</a>

私はブラウザが期待通りにそれを扱い、 空のリンクは大丈夫だろう も知っている-しかし、パラメータだけを指定しても大丈夫ですか?

疑問符( "?")はほとんどのHTTPサーバー(AFAIK)の慣例にすぎないため、好奇心が強いのですが、それは一般的なものだと認めています。

要約すると、

  1. すべてのブラウザはこれを正しく解釈しますか?

  2. これはRFCにありますか?

  3. これを使用していくつかの問題を期待できますか?

UPDATE:クリック時の目的のアクションは、同じページにリダイレクトすることですが、GETパラメーターが異なります(上記の例では「lang = en」)。

46
johndodo

はい、そうです。
これは RFC 1808-Relative Uniform Resource Locators で見つけることができます。

明確に定義されたベースURLを持つオブジェクト内
ベース: <URL:http://a/b/c/d;p?q#f>
相対URLは次のように解決されます。

5.1。通常の例

?y = <URL:http://a/b/c/d;p?y>

RFC 3986-Uniform Resource Identifier(URI):Generic Syntax は同じことを言い直し、文法などの詳細を追加します:

relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

relative-part = "//" authority path-abempty
             / path-absolute
             / path-noscheme
             / path-empty     #; zero characters

さて、それはすべてのブラウザが標準に従ってそれを実装していると言うことではありませんが、これは安全であるように見えます。

39
Kobi

はい-そして、それはあなたが渡したものをパラメータで現在のURLにヒットします。

現在のページ/フォームの境界を越えないようにし、同じActionMethodまたは異なるパラメーターでリッスンしているものにヒットし続けることを確認したい状況で使用すると非常に便利です。

0