URL'lerin içinde bir at simgesi (@) kullanabilir miyim?


90

@Bir kullanıcının parçası olarak bir sembol kullanmak güvenli midir? Örneğin, olası bir URL olacaktır http://example.com/@dave.

Buradaki fikir şu ki, günümüzde kullanıcılar genellikle "@user" olarak adlandırılıyor, öyleyse neden "@ kullanıcıadı" kullanıcı sayfasını yapmıyorsunuz?


2
"kullanıcılar genellikle @user olarak adlandırılır" - WAT? Ama evet, bir URL'de @ kullanabilirsiniz.
Lennart Regebro

1
Doğru bir şekilde kodlanmadığı sürece url'de @ kullanımında yanlış bir şey olmadığını düşünüyorum.
Praveen

4
@ user1671639: Sanırım "doğru şekilde kodlanmış url olduğu sürece" demek istiyorsun.
Lennart Regebro

3
Google haritalarının artık URL'lerinde @ kullandığını fark ettim: google.com/maps/@0,0,2z
Zv_oDD

Yanıtlar:


126

Yüzde olarak kodlanmış…

Sen kullanabilirsiniz @eğer HTTP URI yollarında karakterini yüzde kodlamak olarak %40.

Birçok tarayıcı bunu hala olduğu gibi görüntülerdi @, ancak örneğin URI'yi bir metin belgesine kopyalayıp yapıştırdığınızda, öyle olacaktır %40.

... aynı zamanda doğrudan

Yüzde olarak kodlamak yerine, @doğrudan HTTP URI yolunda kullanabilirsiniz.

Bir URI yolu için sözdizimine bakın . Çeşitli ilişkili olmayan maddeleri kenara, yol karakter oluşabilir segment, segment-nzya da segment-nz-ncset. segmentve aşağıdaki gibi tanımlanan kümedeki segment-nz karakterlerden oluşur pchar:

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

Gördüğünüz gibi, @açıkça listelenmiştir.

segment-nz-ncSeti de listeler @açıkça karakteri:

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

Dolayısıyla, bunun gibi bir HTTP URI'si tamamen geçerlidir:

http://example.com/@dave

Misal

İşte örnek bir Wikipedia sayfası:

  • bağlantı
  • kopyala ve yapıştır: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Gördüğünüz gibi, ", (ve )karakterler yüzde olarak kodlanmış, ancak @ve _direkt olarak kullanılır.


İyi haberler! Peki o zaman Twitter bunu neden yapmıyor?
Augustin Riedinger

1
@AugustinRiedinger: Örnek bir URL verebilir misiniz? Ben Twitter kullanın ve gelen onlar kullanmayın gördüklerinizi yok @artık URL'leri, ama hala eski profil URL'ler işi (?): Yüzde olarak kodlanmış ile örnek @(yok değil ! Eser) vs kullanılarak örnek @doğrudan (yapar iş!) .
UNOR

İlginç! Nitekim, @Twitter durumunda olsun veya olmasın çalışır . İç bağlantıları url'yi @yine de
belirtmiyor

1
@RalphCallaway: AFAIK yalnızca ayrılmamış karakterler yüzde olarak kodlanmış biçimlerine eşdeğerdir , ancak ayrılmamış@ değildir . Dolayısıyla tüketiciler bunu varsaymamalı ve eşdeğerdir. %40@
2016, 18

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.Bu Chrome için doğru değil.
Defozo

43

@ Sembolünü bir URL'de kullanabilir misiniz? - Evet, yapabilirsin!

@ Karakterinin onaltılık değer 40, ondalık değer 64'ün URI'ler için ayrılmış bir karakter olduğuna dikkat edin. Kullanım, mailto:örneğin URI'lerdeki e-posta adresleri gibi şeyler için mailto:username@somewhere.foove kullanıcı adı ve şifre bilgilerini bir URI üzerinden geçirmek içindir (bu kötü bir fikirdir, ancak mümkündür):http://username:password@somewhere.foo

Yolunda @ sembolü olan bir URL istiyorsanız, onu " URL kodlaması " olarak adlandırılan bir şekilde kodlamanız gerekir . Örneğin bunun gibi:http://somewhere.foo/profile/username%40somewhere.foo

Tüm modern tarayıcılar bunu http://somewhere.foo/profile/username@somewhere.foo olarak görüntüler ve @-işaretine yazılan her şeyi %40, kullanımı kolay olana dönüştürür .

Birçok web çerçevesi, otomatik olarak veya yardımcı işlevlerle URL kodlu URL'lere veya URL'lerden dönüştürmenize yardımcı olur.

Özetle: Evet, bir URL'de @ sembolünü kullanabilirsiniz , ancak @ karakterini kullanamayacağınız için kodlanmış olduğundan emin olmalısınız .


+1 mükemmel. Teoriye geçiş yapmak yerine, bir denemek daha iyi. Demek istediğim buydu, bunu güzel cevap olarak verdiğin için teşekkürler.
Praveen

4
Kodlama kötü bir tavsiye olmasa da, @karakterlerin bir url'nin yol kısmında kodlanması "gerekmemektedir" ( greenbytes.de/tech/webdav/rfc3986.html#path )
brianreavis

11

Gelen RFC Aşağıdaki karakterler:

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

ayrılmıştır ve:

Ayrılmış karakterlerin amacı, bir URI içindeki diğer verilerden ayırt edilebilen bir dizi sınırlayıcı karakter sağlamaktır.

Bu nedenle bu karakterlerin kodlamadan kullanılması tavsiye edilmez.


-3

Temelde hayır.

@ ayrılmış bir karakterdir ve yalnızca amacına uygun olarak kullanılmalıdır.

Bkz. Http://perishablepress.com/stop-using-unsafe-characters-in-urls/ ve http://www.ietf.org/rfc/rfc3986.txt

Kodlanmış olarak kullanılabilir, ancak sorduğunuzun bu olduğunu sanmıyorum.

Görünüşe göre modern tarayıcılar bunu halledecek. Bununla birlikte, bunun güvenli olup olmadığını sordunuz ve RFC'nin özelliklerine göre , amacına uygun olmadığı sürece onu (kodlanmamış) kullanmamalısınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.