Kann ich ein at-Symbol (@) in URLs verwenden?

89

Ist es sicher, ein @Symbol als Teil eines Benutzers zu verwenden? Eine mögliche URL wäre beispielsweise http://example.com/@dave.

Die Idee ist, dass Benutzer heutzutage häufig als "@user" bezeichnet werden. Warum also nicht die Benutzerseite "@username" erstellen?

Geoff
quelle
2
"Benutzer werden allgemein als @user bezeichnet" - WAT? Aber ja, Sie können @ in einer URL verwenden.
Lennart Regebro
1
Ich denke, es ist nichts Falsches daran, @ in url zu verwenden, es sei denn, es ist richtig url-codiert.
Praveen
4
@ user1671639: Ich denke du meinst "solange es richtig url codiert ist".
Lennart Regebro
3
Gerade bemerkt, dass Google Maps jetzt @ in seinen URLs verwendet: google.com/maps/@0,0,2z
Zv_oDD

Antworten:

125

Prozentcodiert…

Sie können die Verwendung @Zeichen in HTTP - URI - Pfade , wenn Sie Prozent codieren es als %40.

Viele Browser würden es immer noch als anzeigen @, aber wenn Sie beispielsweise den URI kopieren und in ein Textdokument einfügen, wird dies der Fall sein %40.

… Aber auch direkt

Anstatt es in Prozent zu codieren, können Sie es @direkt im HTTP-URI-Pfad verwenden.

In der Syntax finden Sie den Pfad eines URI. Verschiedene unabhängige Bestimmungen zur Seite, kann der Pfad von Zeichen bestehen , in dem segment, segment-nzoder segment-nz-ncSet. segmentund segment-nz bestehen aus Zeichen aus dem pcharSatz, der definiert ist als:

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

Wie Sie sehen können, @ist das explizit aufgeführt.

Das segment-nz-ncSet listet das @Zeichen auch explizit auf:

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

Ein solcher HTTP-URI ist also völlig gültig:

http://example.com/@dave

Beispiel

Hier ist ein Beispiel für eine Wikipedia-Seite:

  • Verknüpfung
  • Kopieren und Einfügen: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Wie Sie sehen können, die ", (und )Zeichen Prozent-codiert, aber das @und das _direkt verwendet wird.

unor
quelle
Gute Nachrichten! Aber warum macht Twitter das nicht?
Augustin Riedinger
1
@AugustinRiedinger: Können Sie eine Beispiel-URL angeben? Ich benutze Twitter nicht und soweit ich sehe, werden sie nicht @mehr in URLs verwendet, aber die alten (?) Profil-URLs funktionieren immer noch: Beispiel mit prozentualer Codierung @(funktioniert nicht !) Im Vergleich zu Beispiel mit @direkter Verwendung (funktioniert) Arbeit!) .
Unor
Interessant! Funktioniert mit oder ohne @bei Twitter. Ihre inneren Links verweisen auf die URL ohne @jedoch: twitter.com/@stackexchange
Augustin Riedinger
1
@RalphCallaway: AFAIK nur nicht reservierte Zeichen sind äquivalent zu ihren Prozent-codierter Form , aber das @ist nicht unreserved . Verbraucher dürfen das also nicht annehmen %40und @sind gleichwertig.
Unor
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.Das gilt nicht für Chrome.
Defozo
42

Können Sie das @ -Symbol in einer URL verwenden? - Ja, das kannst du!

Beachten Sie, dass @ -Zeichen, Hexadezimalwert 40, Dezimalwert 64, reservierte Zeichen für URIs sind. Die Verwendung erfolgt beispielsweise für E-Mail-Adressen in mailto:URIs mailto:[email protected]und zum Übergeben von Benutzernamen- und Kennwortinformationen an eine URI (was eine schlechte Idee ist, aber möglich):http://username:[email protected]

Wenn Sie eine URL mit einem @ -Symbol in einem Pfad möchten, müssen Sie diese mit der sogenannten " URL-Codierung " codieren . Zum Beispiel so:http://somewhere.foo/profile/username%40somewhere.foo

Alle modernen Browser zeigen dies als http://somewhere.foo/profile/[email protected] an und konvertieren alle in @ -sign eingegebenen in %40, sodass die Verwendung einfach ist.

Viele Web-Frameworks helfen Ihnen auch dabei, entweder automatisch oder mit Hilfsfunktionen in und von URL-codierten URLs zu konvertieren.

Zusammenfassend: Ja, Sie können das @ -Symbol in einer URL verwenden, aber Sie müssen sicherstellen, dass es codiert ist, da Sie das @ -Zeichen nicht verwenden können .

Lennart Regebro
quelle
+1 perfekt. Anstatt die Theorie besser weiterzugeben, versuchen Sie es besser. Das habe ich gemeint, danke, dass du das als nette Antwort gemacht hast.
Praveen
4
Obwohl die Codierung kein schlechter Rat ist, müssen @Zeichen nicht im Pfadteil einer URL ( greenbytes.de/tech/webdav/rfc3986.html#path )
codiert werden
11

Im RFC die folgenden Zeichen:

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

sind reserviert und:

Der Zweck reservierter Zeichen besteht darin, eine Reihe von Begrenzungszeichen bereitzustellen, die von anderen Daten innerhalb eines URI unterscheidbar sind.

Es wird daher nicht empfohlen, diese Zeichen ohne Codierung zu verwenden.

Salvador Dali
quelle
-3

Grundsätzlich nein.

@ ist ein reserviertes Zeichen und sollte nur für den vorgesehenen Zweck verwendet werden.

Siehe: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ und http://www.ietf.org/rfc/rfc3986.txt

Es kann verschlüsselt verwendet werden, aber ich glaube nicht, dass Sie danach gefragt haben.

Anscheinend werden moderne Browser damit umgehen. Sie haben jedoch gefragt, ob dies sicher ist, und gemäß der Spezifikation des RFC sollten Sie es nicht verwenden (nicht codiert), es sei denn, es ist für den beabsichtigten Zweck vorgesehen.

Jon P.
quelle