ฉันสามารถใช้สัญลักษณ์ at (@) ใน URL ได้หรือไม่


90

การใช้@สัญลักษณ์เป็นส่วนหนึ่งของผู้ใช้ปลอดภัยหรือไม่? ตัวอย่างเช่น URL ที่เป็นไปได้http://example.com/@daveคือ

แนวคิดก็คือปัจจุบันผู้ใช้มักเรียกว่า "@user" แล้วทำไมไม่สร้างหน้าผู้ใช้ "@username" ขึ้นมาล่ะ?


2
"ผู้ใช้มักเรียกว่า @user" - WAT? แต่ใช่คุณสามารถใช้ @ ใน URL ได้
Lennart Regebro

1
ฉันคิดว่าไม่มีอะไรผิดในการใช้ @ ใน url เว้นแต่ว่าจะเข้ารหัส url อย่างถูกต้อง
Praveen

4
@ user1671639: ฉันคิดว่าคุณหมายถึง "ตราบเท่าที่มีการเข้ารหัส URL อย่างถูกต้อง"
Lennart Regebro

3
เพิ่งสังเกตว่า Google Maps ใช้ @ ใน URL: google.com/maps/@0,0,2z
Zv_oDD

คำตอบ:


126

เข้ารหัสเปอร์เซ็นต์…

คุณสามารถใช้@ตัวละครในเส้นทาง HTTP URI ถ้าคุณร้อยละเข้ารหัส%40เป็น

เบราว์เซอร์หลายคนจะแสดงก็ยังคงเป็น@แต่เช่นเมื่อคุณคัดลอกและวาง URI %40ลงในเอกสารข้อความที่มันจะเป็น

… แต่ยังโดยตรง

แทนที่จะเข้ารหัสเปอร์เซ็นต์คุณสามารถใช้@โดยตรงในเส้นทาง HTTP URI

ดูไวยากรณ์สำหรับเส้นทางของ URI คำสั่งที่ไม่เกี่ยวข้องต่างๆกันเส้นทางที่อาจประกอบด้วยตัวละครในsegment, segment-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

ตัวอย่าง

นี่คือตัวอย่างหน้า Wikipedia:

  • ลิงค์
  • คัดลอกและวาง: http://en.wikipedia.org/wiki/%22@%22_%28album%29

ในขณะที่คุณสามารถดู", (และ)ตัวอักษรเป็นร้อยละเข้ารหัส แต่@และ_ถูกนำมาใช้โดยตรง


ข่าวดี! แต่แล้วทำไม Twitter ไม่ทำเช่นนี้?
Augustin Riedinger

1
@AugustinRiedinger: คุณช่วยระบุ URL ตัวอย่างได้ไหม ฉันไม่ได้ใช้ Twitter และจากสิ่งที่ฉันเห็นว่าพวกเขาไม่ได้ใช้@ใน URL อีกต่อไป แต่ URL ของโปรไฟล์ (?) เก่ายังใช้งานได้: ตัวอย่างที่เข้ารหัสเปอร์เซ็นต์@(ใช้งานไม่ได้ !)เทียบกับตัวอย่างที่ใช้@โดยตรง (does ทำงาน!) .
ถึง

น่าสนใจ! อันที่จริงใช้งานได้หรือไม่ก็ได้@ในกรณีของ Twitter ลิงก์ภายในของพวกเขาอ้างถึง url โดยไม่@ว่า: twitter.com/@stackexchange
Augustin Riedinger

1
@RalphCallaway: AFAIK มีเพียงอักขระที่ไม่ได้สงวนไว้เท่านั้นที่เทียบเท่ากับรูปแบบที่เข้ารหัสเปอร์เซ็นต์แต่@จะไม่ถูกสงวนไว้ ดังนั้นผู้บริโภคจะต้องไม่ถือว่า%40และ@เทียบเท่า
ถึง

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

43

คุณใช้สัญลักษณ์ @ ใน URL ได้หรือไม่? - ใช่คุณทำได้!

โปรดสังเกตว่า @ -character ค่าฐานสิบหก 40 ค่าทศนิยม 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ดังนั้นจึงใช้งานง่าย

เว็บเฟรมเวิร์กจำนวนมากจะช่วยคุณโดยอัตโนมัติหรือด้วยฟังก์ชันตัวช่วยในการแปลงเป็นและจาก URL ที่เข้ารหัส URL

โดยสรุป: ได้คุณสามารถใช้@ -symbolใน URL ได้ แต่คุณต้องตรวจสอบให้แน่ใจว่ามีการเข้ารหัสเนื่องจากคุณไม่สามารถใช้@ -characterได้


+1 ที่สมบูรณ์แบบ แทนที่จะถ่ายทอดทฤษฎีดีกว่าที่จะลอง นี่คือสิ่งที่ฉันหมายถึงขอบคุณที่ทำให้สิ่งนี้เป็นคำตอบที่ดี
Praveen

4
แม้ว่าการเข้ารหัสจะไม่ใช่คำแนะนำที่ไม่ดี แต่@อักขระก็ไม่ "จำเป็น" ที่จะเข้ารหัสในส่วนพา ธ ของ url ( greenbytes.de/tech/webdav/rfc3986.html#path )
brianreavis

11

ในRFCอักขระต่อไปนี้:

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

สงวนไว้และ:

วัตถุประสงค์ของอักขระที่สงวนไว้คือการจัดเตรียมชุดอักขระการคั่นที่แตกต่างจากข้อมูลอื่นภายใน URI

ดังนั้นจึงไม่แนะนำให้ใช้อักขระเหล่านี้โดยไม่เข้ารหัส


-3

หมายเลข Basicaly

@ เป็นอักขระที่สงวนไว้และควรใช้ตามวัตถุประสงค์ที่ตั้งไว้เท่านั้น

ดู: 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.