[解決済み] コロン `:` はフレンドリー URL で使用しても安全ですか?
質問
アプリケーションのセクションをスラッシュで区切られた単語として指定するURLシステムを設計しています。 具体的には、これはGWTにあるので、URLの関連する部分はハッシュになります(これはクライアント側のコントローラ層によって解釈されます)。
http://site/gwturl#section1/section2
セクションによっては追加の属性が必要な場合もあるので、その場合は
:
で指定し、URL のセクション部分が曖昧にならないようにしたいと思います。 このコードでは、まず
/
で分割され、次に
:
のような、このような。
http://site/gwturl#user:45/comments
もちろん、私たちはこれをURLフレンドリーのために行っているので、特別な意味を持つこれらの文字のどれもが、ブラウザや他のシステムによってURLエンコードされ、以下のようなURLにならないようにしたいと思います。
http://site/gwturl#user%3A45/comments <--- BAD
コロンの使い方は、このように セーフ (というのは、ブラウザ、ブックマーク システム、Javascript や Java コードでさえも、自動的にエンコードされないという意味です)。
どのように解決するのですか?
最近 を書きました。 を書いたので、かなり記憶に新しいです。
http://site/gwturl#user:45/comments
の文字はすべて
フラグメント部分
(
user:45/comments
) は、完全に合法です。
RFC 3986
の URI として完全に合法です。
の該当箇所は ABNF :
fragment = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
これらの制限を除けば、フラグメント部分は、アプリケーションが与える以上の構造を定義していません。 httpというスキームは、この部分をサーバーに送信しないことを述べているだけです。
EDITです。
ドヤッ!
URIの仕様について私が主張したにもかかわらず 議論の余地のない が正しい答えを提供するとき を指摘する。 というのは HTML 4 仕様は要素名/識別子を制限しています。 .
なお、識別子のルールは で変更され、HTML 5 では . URI の制限は引き続き適用されます (執筆時点では、HTML 5 での URI の使用に関して未解決の問題があります)。
関連
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] jQueryで現在のURLを取得する?
-
[解決済み] アプリケーションからAndroidのWebブラウザでURLを開くにはどうすればよいですか?
-
[解決済み] URLのPath.Combineは?
-
[解決済み] PHPで完全なURLを取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スペース文字をURLエンコードしています。+ または%20?
-
[解決済み] URLの%2Cとは何ですか?
-
[解決済み] URLを括弧付きでcurlに渡す
-
[解決済み] URLを作成する際に安全な文字は何ですか?
-
[解決済み] url クエリパラメータに値がない場合、有効ですか?
-
[解決済み] 改行文字"Ⓐ"の送信
-
[解決済み] ブラウザからチャンネルを開くためのSlackのURL
-
[解決済み] サーバーサイドからUrl Hash (#) を取得する方法
-
[解決済み] url 変数のスラッシュ
-
[解決済み] URLからフラグメント(ハッシュ '#' 以降の値)を取得する [終了しました]。