मैं अपना स्वयं का URL प्रोटोकॉल कैसे बनाऊं? (उदाहरण के लिए: //…) [बंद]


212

मैंने देखा है:

  • http://www...
  • ftp://blah.blah...
  • file://blah.blah...
  • unreal://blah.blah...
  • mailto://blah.blah...

वह पहला खंड क्या है जहाँ आप देखते हैं httpऔर जैसे बुलाया जाता है?

क्या मैं अपना पंजीकरण करा सकता हूं?


5
सुनिश्चित नहीं हैं कि अगर इसे c # और .net टैग्स की आवश्यकता है, तो यह उससे कहीं अधिक व्यापक है।
रोब ह्रस्का

ये उचित है। मैंने केवल इसे इस तरह से टैग किया क्योंकि हम कुछ इस तरह से लागू करने के लिए C # का उपयोग करने की योजना बना रहे थे। हालांकि धन्यवाद। :-)
माइकल बेक

14
सही नाम "स्कीम" है (RFC 2616 और 2396 देखें)। यहां तक ​​कि अगर कई URL योजनाओं को प्रोटोकॉल के नाम पर रखा गया है, तो इसका मतलब यह नहीं है कि संसाधन तक पहुंचने का एकमात्र तरीका प्रोटोकॉल के माध्यम से है
मारेक

दो प्रकार के प्रोटोकॉल हैं, लेकिन मुझे नहीं पता कि उन्हें अलग करने के लिए किस शब्द का उपयोग करना है। क्लाइंट में "फ़ाइल" और "मेल्टो" प्रोटोकॉल संसाधित होते हैं। "Http" और "ftp" प्रोटोकॉल सर्वर में संसाधित होते हैं। पहले तो मुझे ब्राउज़र में संसाधित किए गए प्रोटोकॉल के उत्तरों से भ्रमित किया गया था जब मुझे कुछ ऐसा चाहिए जो सर्वर में संसाधित होता है।
user34660

जवाबों:


203

, आदि HTTP://, के साथ भाग को यूआरआई योजनाएंFTP:// कहा जाता है

आप रजिस्ट्री के माध्यम से अपना पंजीकरण करा सकते हैं।

HKEY_CLASSES_ROOT/
  your-protocol-name/
    (Default)    "URL:your-protocol-name Protocol"
    URL Protocol ""
    shell/
      open/
        command/
          (Default) PathToExecutable

स्रोत: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml , http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx


19
गैर-विंडोज ओएस के बारे में क्या?
Bdoserror

9
"गैर-विंडोज ओएस के बारे में क्या?" यह अनुप्रयोग-विशिष्ट है। मुझे लगता है कि यह वास्तव में विंडोज पर अक्सर अनुप्रयोग-विशिष्ट है (यह सब कुछ जादुई रूप से काम नहीं करेगा)।
कालू डेम

2
सब कुछ परिभाषित करें। रजिस्ट्री प्रविष्टि विंडोज को बताती है कि उस प्रोटोकॉल के साथ उरी को दिए गए आवेदन में पास किया जाना चाहिए, बाकी सब कुछ आवेदन द्वारा ही संभाला जाना चाहिए।
जेम्स ग्रेगरी

5
प्लग करने योग्य प्रोटोकॉल हैंडलर निश्चित रूप से एक बेहतर विकल्प है।

8
(Default)यहाँ खाली स्ट्रिंग का मतलब है। इसे सचमुच मत लो।
deerchao

56

नोटपैड खोलें और नीचे दिए गए कोड को पेस्ट करें। अपने ऐप के नाम में "YourApp" बदलें। इसे YourApp.reg पर सहेजें और इसे एक्सप्लोरर में क्लिक करके निष्पादित करें। बस! चीयर्स! इरविन हैन्त्जेस

REGEDIT4

[HKEY_CLASSES_ROOT\YourApp]
@="URL:YourApp Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\YourApp\DefaultIcon]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\""

[HKEY_CLASSES_ROOT\YourApp\shell]

[HKEY_CLASSES_ROOT\YourApp\shell\open]

[HKEY_CLASSES_ROOT\YourApp\shell\open\command]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" \"%6\" \"%7\" \"%8\" \"%9\""

2
कैसे अन्वेषक से कॉल करने के लिए, यूआरएल है क्या
छोटा सा भूत

@ दलाल, यह (इंटरनेट) एक्सप्लोरर से .reg फ़ाइलों को कॉल करने के लिए एक स्मार्ट विचार नहीं है। आप एक reg फ़ाइल को निष्पादित करने के लिए स्टार्ट कमांड का उपयोग कर सकते हैं, जैसे 'start yourregfile.reg' लेकिन आपको ओएस से एक त्वरित संदेश मिलेगा, इसे रजिस्ट्री में जोड़ना सुनिश्चित करें। इसे सक्षम करने के लिए उपयोगकर्ता के पास व्यवस्थापक विशेषाधिकार होने चाहिए।
कोडबीट

दरअसल मैं इस सवाल के बारे में पूछ रहा हूं stackoverflow.com/questions/24265292/…
छोटा सा भूत

3
Reg फ़ाइल में% 1% 2 आदि आपके ऐप के लिए तर्क (ओं) हैं। तो अगर आप YourApp.exe "अपने तर्क" तो% 1 == "अपने तर्क" करते हैं
कोडबीट

1
केवल% 1 मामला, url% 2 और% 3 आदि में निर्दिष्ट करने का कोई तरीका नहीं है
Trident D'Gao

39

यह प्रत्येक ब्राउज़र के लिए अलग है, IE और खिड़कियों में आपको यह बनाने की आवश्यकता है कि वे एक प्लग करने योग्य प्रोटोकॉल हैंडलर को क्या कहते हैं।

मूल चरण इस प्रकार हैं:

  1. IInternetProtocol इंटरफ़ेस लागू करें।
  2. IInternetProtocolRoot इंटरफ़ेस लागू करें।
  3. IClassFactory इंटरफ़ेस को लागू करें।
  4. वैकल्पिक। IInternetProtocolInfo इंटरफ़ेस लागू करें। HTTP प्रोटोकॉल के लिए ट्रांजेक्शन हैंडलर द्वारा सहायता प्रदान की जाती है।
  5. यदि IInternetProtocolInfo कार्यान्वित किया जाता है, तो PARSE_SECURITY_URL और PARSE_SECURITY_DOMAIN के लिए सहायता प्रदान करें ताकि URL सुरक्षा ज़ोन प्रबंधक सुरक्षा को ठीक से संभाल सके। अपने प्रोटोकॉल हैंडलर के लिए कोड लिखें।
  6. BINDF_NO_UI और BINDF_SILENTOPERATION के लिए सहायता प्रदान करें।
  7. HKEY_CLASSES_ROOT \ PROTOCOLS \ हैंडलर के तहत रजिस्ट्री में अपने प्रोटोकॉल हैंडलर के लिए एक उपकुंजी जोड़ें।
  8. उप मान के तहत एक स्ट्रिंग मान, CLSID बनाएँ, और स्ट्रिंग को अपने प्रोटोकॉल हैंडलर के CLSID में सेट करें।

MSDN पर एसिंक्रोनस प्लगेबल प्रोटोकॉल के बारे में देखेंविंडोज़ साइड पर अधिक विवरण के लिए । विंडोज़ एसडीके में एक नमूना भी है।

एक त्वरित Google ने भी कोडप्रोजेक्ट पर यह लेख दिखाया: http://www.codeproject.com/KB/IP/DataProtocol.aspx

अंत में, एक सुरक्षा लड़के के रूप में मुझे यह बताना होगा कि इस कोड को लड़ाई को और सख्त करने की आवश्यकता है। यह एक उच्च जोखिम के कारण है क्योंकि इसे मज़बूती से करने के लिए आप इसे प्रबंधित कोड में नहीं कर सकते हैं और इसे C ++ में करना होगा (मुझे लगता है कि आप VB6 का उपयोग कर सकते हैं)। आपको यह विचार करना चाहिए कि क्या आपको वास्तव में ऐसा करने की आवश्यकता है और यदि आप ऐसा करते हैं, तो इसे सावधानीपूर्वक डिज़ाइन करें और इसे सुरक्षित रूप से कोड करें। एक हमलावर आसानी से उस सामग्री को नियंत्रित कर सकता है जो एक पृष्ठ पर एक लिंक सहित आपके पास से गुजरती है। उदाहरण के लिए यदि आपके पास एक साधारण बफर अतिप्रवाह है तो कोई भी बेहतर कार्य नहीं करेगा:<a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>

जोरदार तरीके से स्ट्रैस का उपयोग करने पर विचार करें और नए सुरक्षित सीआरटी तरीकों को वीसी 8 और ऊपर के संकलक में शामिल करें। Http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx देखें अगर आपको कोई अंदाजा नहीं है कि मैं किस बारे में बात कर रहा हूं।


6
उस पर क्लिक करने के लिए उपयोगकर्ताओं को लुभाने के लिए यह केवल एक उदाहरण है।
पीटर ओहलर्ट

कृपया इसे स्पष्ट करें: «क्योंकि इसे विश्वसनीय रूप से करने के लिए आप इसे प्रबंधित कोड में नहीं कर सकते हैं और इसे C ++» में करना होगा
LogicDaemon

2
यह .Net 2.0 रनटाइम (नोट, इसमें 3.0 और 3.5) टाइमफ्रेम शामिल है। यह एक ही प्रक्रिया में विभिन्न CLR रनटाइम का समर्थन नहीं करता है, इसलिए यदि मैंने 1.0 हैंडलर लिखा है और आपने 2.0 लिखा है, और हमारे दोनों उत्पाद एक ग्राहक कंप्यूटर पर स्थापित किए गए हैं, तो साथ में हम यह सुनिश्चित करेंगे कि ब्राउज़र हर बार दुर्घटनाग्रस्त हो जाए इसे लॉन्च किया गया। 4.0 रनटाइम ने इस मुद्दे को लक्षित करने की कोशिश की, लेकिन मेरा स्मरण अभी भी सीमा मामलों में चिंतित होने के लिए है। लेकिन जीआईटी उपयोग कर रहा है। देशी प्रक्रियाओं में प्लगइन्स के लिए .नेट ऑब्जेक्ट्स को 4.0 से पहले पूरी तरह से टाला जाना था और इसके बारे में चिंता करने के लिए अभी भी कोने के मामले हो सकते हैं।
पीटर ओहलर्ट

19

यहां पंजीकृत यूआरआई योजनाओं की सूची दी गई है । प्रत्येक में एक आरएफसी है - इसे परिभाषित करने वाला एक दस्तावेज, जो लगभग एक मानक है। RFC नए एप्लिकेशन (जैसे ब्राउज़र, ftp क्लाइंट आदि) के डेवलपर्स को बताता है कि उन्हें किस चीज़ का समर्थन करने की आवश्यकता है। यदि आपको एक नए आधार-स्तरीय प्रोटोकॉल की आवश्यकता है, तो आप एक अपंजीकृत का उपयोग कर सकते हैं। अन्य उत्तर आपको बताते हैं कि कैसे। कृपया ध्यान रखें कि आप मौजूदा प्रोटोकॉल के साथ बहुत सारी चीजें कर सकते हैं, इस प्रकार उनके मौजूदा कार्यान्वयन प्राप्त कर सकते हैं।


6
विंडोज में प्रोटोकॉल काम करने के तकनीकी विवरण के बावजूद - यह सबसे महत्वपूर्ण जवाब है। जब तक यह IETF के साथ पंजीकृत नहीं है, या एक प्रयोगात्मक नामस्थान (जैसे X- उपसर्ग) का उपयोग करके एक नई URI योजना नहीं बनानी चाहिए
Alnitak

4

अधिकांश Microsoft उत्पादों (इंटरनेट एक्सप्लोरर, कार्यालय, "ओपन फाइल" डायलॉग्स आदि) के लिए आप एक एप्लिकेशन रजिस्टर कर सकते हैं जब URI उपयुक्त उपसर्ग के साथ खोला जाए। यह अधिक सामान्य स्पष्टीकरण का एक हिस्सा है - अपने स्वयं के प्रोटोकॉल को कैसे लागू किया जाए।

मोज़िला के लिए स्पष्टीकरण यहाँ है , जावा - यहाँ


2

इसे प्रोटोकॉल कहा जाता है। केवल एक चीज जो आपको अपना प्रोटोकॉल बनाने से रोकती है, वह है:

  1. कुछ प्रकार के एक ब्राउज़र या उपयोगकर्ता एजेंट को लिखें जो उस प्रोटोकॉल को समझता है, उसके URL रूप में और वास्तविक डेटा प्रारूप में दोनों
  2. एक सर्वर लिखें जो उस प्रोटोकॉल को समझता है
  3. अधिमानतः, प्रोटोकॉल के लिए एक विनिर्देश है ताकि ब्राउज़र और सर्वर एक साथ काम करना जारी रख सकें।

विंडोज # 1 को वास्तव में आसान बनाता है, (कई मामलों में यह वास्तव में आपकी आवश्यकता है। अर्थात:

एक URL प्रोटोकॉल के लिए एक आवेदन दर्ज करना


1

पहले खंड को एक प्रोटोकॉल कहा जाता है और हाँ आप अपना पंजीकरण कर सकते हैं। विंडोज पर (जहां मैं मान रहा हूं कि आप इसे C # टैग - सॉरी मोनो प्रशंसकों को देखते हुए कर रहे हैं), यह रजिस्ट्री के माध्यम से किया गया है



-10

आप वास्तव में इस तरह के रूप में किसी भी पंजीकरण करने की जरूरत नहीं है। मैंने कई कार्यक्रम देखे हैं, जैसे कि एमुएल, अपना खुद का प्रोटोकॉल स्पेसिफ़िक बनाएं (यही मुझे लगता है कि इसे कहा जाता है)। उसके बाद, आपको मूल रूप से रजिस्ट्री में कुछ मान सेट करने होंगे जो प्रोग्राम उस प्रोटोकॉल को संभालता है। अगर प्रोटोकॉल की कोई आधिकारिक रजिस्ट्री है तो मुझे यकीन नहीं है। यदि आप चाहते हैं कि लोग आपके एप्लिकेशन को अपने ब्राउज़र से खोलना चाहें, तो आपको अपने स्वयं के प्रोटोकॉल को बनाने से रोकने के लिए वास्तव में बहुत कुछ नहीं है।


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