web-dev-qa-db-ja.com

URL内でアットマーク(@)を使用できますか?

ユーザーの一部として@シンボルを使用しても安全ですか?たとえば、可能なURLはhttp://example.com/@daveです。

考えは、今日では、ユーザーは一般的に「@user」と呼ばれているので、なぜユーザーページを「@username」にしないのでしょうか?

83
Geoff

パーセントエンコード…

percent-encode として@の場合、HTTP URIパスで%40文字を使用できます。

多くのブラウザでは、まだ@として表示されますが、 URIをテキストドキュメントにコピーアンドペーストすると、%40になります。

…しかしまた直接

パーセントエンコーディングの代わりに、HTTP URIパスで@を直接使用できます。

URIの path の構文を参照してください。関係のないさまざまな句は別として、パスはsegmentsegment-nz、またはsegment-nz-ncセットの文字で構成されます。 segmentおよびsegment-nzは、pcharセットの文字で構成され、次のように定義されます。

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

ご覧のとおり、@は明示的にリストされています。

segment-nz-ncセットは、@文字も明示的にリストします。

segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )

したがって、このようなHTTP URIは完全に有効です。

http://example.com/@dave

ウィキペディアのページの例を次に示します。

  • リンク
  • コピーアンドペースト:http://en.wikipedia.org/wiki/%22@%22_%28album%29

ご覧のとおり、"(、および)文字はパーセントエンコードされていますが、@および_が直接使用されています。

119
unor

URLで@記号を使用できますか? -はい、できます!

@文字、16進値40、10進値64は、URIの予約文字であることに注意してください。使用法は、mailto:URIの電子メールアドレス、たとえばmailto:[email protected]など、およびURIでユーザー名とパスワード情報を渡すことです(これは悪い考えですが、可能です):http://username:[email protected]

パスに@記号を含むURLが必要な場合は、「 RL-encoding 」でエンコードする必要があります。例:http://somewhere.foo/profile/username%40somewhere.foo

最新のブラウザはすべてこれを http://somewhere.foo/profile/[email protected] として表示し、@-signに入力されたものを%40に変換するため、簡単につかいます。

多くのWebフレームワークは、URLエンコードされたURLとの間で自動的に、またはヘルパー機能を使用して変換するのにも役立ちます。

要約すると、はい、URLで@-symbolを使用できますが、エンコードできないことを確認する必要があります@-characterを使用します。

38
Lennart Regebro

RFC では、次の文字:

! * '(); :@&= + $、/? %#[]

予約されている:

予約文字の目的は、URI内の他のデータと区別できる区切り文字のセットを提供することです。

したがって、これらの文字をエンコードせずに使用することは推奨されません。

11
Salvador Dali