क्या मैं यूआरएल में प्रतीक (@) पर उपयोग कर सकता हूं?


90

क्या @किसी उपयोगकर्ता के हिस्से के रूप में एक प्रतीक का उपयोग करना सुरक्षित है ? उदाहरण के लिए, एक संभावित URL होगा http://example.com/@dave

विचार यह है कि, आजकल के उपयोगकर्ता आमतौर पर "@user" कहलाते हैं, इसलिए उपयोगकर्ता पृष्ठ को "@username" क्यों नहीं बनाया जाए?


2
"उपयोगकर्ताओं को आमतौर पर @user कहा जाता है" - वाट? लेकिन हाँ, आप URL में @ का उपयोग कर सकते हैं।
लेन्नर्ट रेग्रोब

1
मुझे लगता है कि url में @ का उपयोग करने में कुछ भी गलत नहीं है जब तक कि यह ठीक से url एन्कोडेड न हो।
प्रवीण

4
@ user1671639: मुझे लगता है कि आपका मतलब है "जब तक यह ठीक से यूआरएल एनकोडेड है"।
लेनार्ट रेगेब्रो

3
बस देखा गया Google मानचित्र अब अपने URL में @ का उपयोग कर रहा है: google.com/maps/@0,0,2z
Zv_oDD

जवाबों:


126

प्रतिशत-एन्कोडेड ...

@यदि आप इसे प्रतिशत-सांकेतिक शब्दों में बदलना है, तो आप HTTP URI पथ में वर्ण का उपयोग कर सकते हैं %40

कई ब्राउज़र इसे तब भी प्रदर्शित करेंगे @, लेकिन जब आप URI को टेक्स्ट डॉक्यूमेंट में कॉपी-पेस्ट करते हैं, तो यह होगा %40

… लेकिन सीधे भी

प्रतिशत-एन्कोडिंग के बजाय, आप @सीधे HTTP यूआरआई पथ में उपयोग कर सकते हैं ।

URI के पथ के लिए सिंटैक्स देखें । विभिन्न असंबंधित खंड एक तरफ, रास्ते में वर्ण शामिल हो सकते हैं segment, segment-nzया segment-nz-ncसेट। segmentतथाsegment-nzpchar सेट से वर्णों से मिलकर बनता है , जिसे इस प्रकार परिभाषित किया गया है:

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

आप देख सकते हैं, ", (, और )वर्ण प्रतिशत-एन्कोड किए हैं, लेकिन @और _सीधे प्रयोग किया जाता है।


खुशखबरी! लेकिन फिर, ट्विटर ऐसा क्यों नहीं करता है?
ऑगस्टिन रीडिंगर

1
@AugustinRiedinger: क्या आप एक उदाहरण URL प्रदान कर सकते हैं? मैं ट्विटर का उपयोग नहीं करता हूं, और जो मैं देख रहा हूं, वे @अब URL में उपयोग नहीं करते हैं, लेकिन पुराने (?) प्रोफ़ाइल URL अभी भी काम करते हैं: उदाहरण के साथ प्रतिशत-एन्कोडेड @(काम नहीं करता!) बनाम उदाहरण का @सीधे उपयोग करके (करता है) काम!)
unor

दिलचस्प! दरअसल, @ट्विटर के मामले में साथ या बिना काम करता है । उनके आंतरिक लिंक बिना यूआरएल का उल्लेख करते हैं @: twitter.com/@stackexchange
Augustin Riedinger

1
@ राल्फक्लावे: AFAIK केवल अनारक्षित अक्षर उनके प्रतिशत-एन्कोडेड फ़ॉर्म के बराबर हैं , लेकिन अनारक्षित@ नहीं है । उपभोक्ताओं को मान लेते हैं कि नहीं होना चाहिए तो और बराबर हैं। %40@
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.यह क्रोम के लिए सच नहीं है।
Defozo

42

क्या आप URL में @ -symbol का उपयोग कर सकते हैं? - हाँ, आप कर सकते हैं!

ध्यान दें कि @ -चक्र, षोडश आधारी मूल्य 40, दशमलव मान 64, URI के लिए एक आरक्षित वर्ण है। इसका उपयोग mailto:यूआरआई में ईमेल-पते जैसी चीजों के लिए है, उदाहरण के लिए mailto:username@somewhere.fooऔर यूआरआई पर उपयोगकर्ता नाम और पासवर्ड की जानकारी को पारित करने के लिए (जो एक बुरा विचार है, लेकिन संभव है):http://username:password@somewhere.foo

यदि आप एक ऐसा URL चाहते हैं जिसमें एक पथ में @ -symbol है जिसे आपको इसे " URL-एन्कोडिंग " कहा जाना चाहिए। इस तरह के उदाहरण के लिए:http://somewhere.foo/profile/username%40somewhere.foo

सभी आधुनिक ब्राउज़र इसे http://somewhere.foo/profile/username@somewhere.foo के रूप में प्रदर्शित करेंगे , और किसी भी @ में टाइप टाइप करेंगे %40, इसलिए इसका उपयोग करना आसान है।

URL-एन्कोडेड URL से परिवर्तित करने के लिए कई वेब-फ्रेमवर्क आपको या तो स्वचालित रूप से, या सहायक कार्यों के साथ मदद करेंगे।

तो, सारांश में: हाँ, आप URL में @ -symbol का उपयोग कर सकते हैं , लेकिन आपको यह सुनिश्चित करना होगा कि यह एन्कोडेड है, क्योंकि आप @ -चट्रैकर का उपयोग नहीं कर सकते ।


+1 सही। एक कोशिश देने के लिए सिद्धांत पर बेहतर तरीके से रिले करने के बजाय। यह वह चीज है जिसका मैंने मतलब किया है, इसे अच्छा जवाब देने के लिए धन्यवाद।
प्रवीण

4
हालांकि एन्कोडिंग बुरी सलाह नहीं है, @वर्णों को एक url ( greenbytes.de/tech/webdav/rfc3986.html#path ) के पथ भाग में एन्कोडेड होने की "आवश्यकता" नहीं है
brireavis

11

में आरएफसी निम्न वर्णों:

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

आरक्षित हैं और:

आरक्षित वर्णों का उद्देश्य ऐसे पात्रों का परिसीमन करना है जो किसी URI के भीतर अन्य डेटा से अलग होते हैं।

तो एन्कोडिंग के बिना इन वर्णों का उपयोग करने की अनुशंसा नहीं की जाती है।


-3

बेसिकल नं।

@ एक आरक्षित वर्ण है और इसका उपयोग केवल इसके इच्छित उद्देश्य के लिए किया जाना चाहिए।

देखें: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ और http://www.ietf.org/rfc/rfc3986.txt

इसका उपयोग एन्कोड किया जा सकता है, लेकिन मुझे नहीं लगता कि आप जो पूछ रहे थे।

जाहिरा तौर पर आधुनिक ब्राउज़र इसे संभाल लेंगे। हालाँकि आपने पूछा कि क्या यह सुरक्षित है और RFC की कल्पना के अनुसार आपको इसका (अनएन्कोडेड) तब तक उपयोग नहीं करना चाहिए जब तक कि यह अपने इच्छित उद्देश्य के लिए न हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.