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


90

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

今日では、ユーザーは一般に「@user」と呼ばれているので、ユーザーページを「@username」にしてみませんか?


2
「ユーザーは一般に@userと呼ばれます」-WAT?しかし、はい、URLで@を使用できます。
Lennart Regebro 2013年

1
正しくURLエンコードされていない限り、URLで@を使用しても問題はないと思います。
Praveen 2013年

4
@ user1671639:「適切にURLエンコードされている限り」という意味だと思います。
Lennart Regebro 2013年

3
グーグルマップがURLで@を使用していることに気づきました:google.com/maps/@0,0,2z
Zv_oDD 2014年

回答:


126

パーセントエンコード…

@文字をパーセントエンコードすると、HTTPURIパスでその文字を使用できます%40

多くのブラウザはそれをまだとして表示しますが@、たとえば、URIをコピーしてテキストドキュメントに貼り付けると、になります%40

…だけでなく直接

パーセントエンコードする代わりに、@HTTPURIパスで直接使用できます。

URIのパスの構文を参照してください。種々の無関係の句はさておき、パスは、の文字からなっていてもよいsegmentsegment-nzまたはsegment-nz-ncセット。セット の文字segmentsegment-nz構成pcharされ、次のように定義されます。

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

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

segment-nz-ncセットも示しています@明示的に文字を:

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

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

http://example.com/@dave

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

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

あなたが見ることができるように、"(、および)文字はパーセントエンコードされているが、@そして_直接使用されます。


朗報です!しかし、なぜTwitterはこれを行わないのですか?
Augustin Riedinger 2015年

1
@AugustinRiedinger:URLの例を教えていただけますか?私はツイッターを使い、そしてから私は、彼らが使用していない見たものはありません@もうURLで、まだ古いプロファイルのURL仕事(?):パーセントエンコードを持つ例@(んではない!仕事)対の使用例@を直接は(ありません動作します!)
unor

面白い!確かに、@Twitterの場合は有無にかかわらず動作します。彼らの内部リンクは、@しかしなしでURLを参照します:twitter.com/@stackexchange
Augustin Riedinger 2015年

1
@RalphCallaway:私の知る限り唯一の非予約文字は、そのパーセントエンコードされた形式と同等であるが、@ではありません予約されていません。したがって、消費者はそれを想定し%40@はならず、同等です。
unor 2016

1
Many browsers would display it still as @, but e.g. when you copy-and-paste the URI into a text document, it will be %40.これはChromeには当てはまりません。
Defozo 2016

42

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

@文字、16進値40、10進値64は、URI用に予約されている文字であることに注意してください。mailto:たとえば、URIのメールアドレスなどに使用されます。mailto:username@somewhere.fooや、URIでユーザー名とパスワードの情報を渡すために使用されます(これは悪い考えですが、可能です)。http://username:password@somewhere.foo

パスに@記号が含まれるURLが必要な場合は、いわゆる「URLエンコード」を使用してエンコードする必要があります。たとえば、次のようになります。http://somewhere.foo/profile/username%40somewhere.foo

最近のすべてのブラウザはこれをhttp://somewhere.foo/profile/username@somewhere.fooとして表示し、@-signで入力されたものをに変換します%40ので使いやすいです。

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

だから、要約すると:はい、あなたは使用することができます@ -symbolをURLに、しかし、あなたが使用することはできませんとして、あなたは、それがコード化されますことを確認する必要があり、@ -characterを


+1パーフェクト。理論を中継する代わりに、試してみてください。これは私が意味したことです、これを良い答えとして作ってくれてありがとう。
Praveen 2013年

4
エンコードは悪いアドバイスではありませんが、@文字はURLのパス部分(greenbytes.de/tech/webdav/rfc3986.html#path)でエンコードする必要はありません
brianreavis 2016

11

ではRFC次の文字:

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

予約済みで:

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

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


-3

基本的にはありません。

@ は予約文字であり、本来の目的にのみ使用する必要があります。

参照:http//perishablepress.com/stop-using-unsafe-characters-in-urls/およびhttp://www.ietf.org/rfc/rfc3986.txt

エンコードして使用することもできますが、それはあなたが求めていたものではないと思います。

どうやら最近のブラウザはこれを処理します。ただし、これが安全かどうかを尋ねました。RFCの仕様によれば、意図された目的でない限り、(エンコードされていない)使用しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.