2012-03-10 13 views
103

संभव डुप्लिकेट: जब मैंने देखा
URI starting with two slashes … how do they behave?
Absolute URLs omitting the protocol (scheme) in order to preserve the one of the current page
shorthand as // for script and link tags? anyone see/use this before?दो आगे एक यूआरएल/src/href विशेषता में स्लैश

मैं HTML5 Reset के स्रोत के माध्यम से देख रहा था following line:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> 

URL दो आगे की स्लैश के साथ क्यों शुरू होता है? क्या यह http:// के लिए एक शॉर्टेंड है?

+0

वर्तमान पृष्ठ में से किसी एक को संरक्षित करने के लिए प्रोटोकॉल (योजना) को छोड़कर निरपेक्ष यूआरएल के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/4978235/absolute-urls-omitting-the-protocol-checheme -ऑन-ऑर्डर-टू-प्रोस्टर्व-द-ऑफ-द-द), यह भी देखें [क्या मैं अपने सभी http: // लिंक को सिर्फ //?] (http://stackoverflow.com/questions/4831741/ पर बदल सकता हूं) Can-i-change-all-my-http-links-to-just) –

+0

संभावित डुप्लिकेट [क्या यह http: // को // script = // http: // ... //> में बदलने के लिए मान्य है? ] (http: // stackoverflow।कॉम/क्यू/550038/90527) [यूआरआई दो स्लैश से शुरू होता है ... वे कैसे व्यवहार करते हैं?] (http://stackoverflow.com/q/4071117/) – outis

उत्तर

164

"दो फॉरवर्ड स्लैश" "जो भी प्रोटोकॉल अभी उपयोग किया जा रहा है" के लिए एक सामान्य शॉर्टेंड है।

सर्वश्रेष्ठ "प्रोटोकॉल रिश्तेदार यूआरएल" के रूप में जाना जाता है, वे विशेष रूप से उपयोगी होते हैं जब तत्व - जैसे कि आपके उदाहरण में जेएस फ़ाइल - http या https संदर्भ से लोड किया जा सकता है। प्रोटोकॉल संबंधित URL का उपयोग करके, आप अपने सभी codebase से अधिक तर्क के

if (window.location.protocol === 'http:') { 
    myResourceUrl = 'http://example.com/my-resource.js'; 
} else { 
    myResourceUrl = 'https://example.com/my-resource.js'; 
} 

प्रकार को लागू करने से बच सकते हैं (यह मानते हुए, जाहिर है, कि example.com पर सर्वर http दोनों और https के माध्यम से संसाधनों की सेवा करने में सक्षम है)।

एक प्रमुख असली दुनिया का उदाहरण Magento ई-कॉमर्स इंजन है: प्रदर्शन कारणों से, दुकान के पृष्ठ डिफ़ॉल्ट रूप से सादे http का उपयोग करते हैं, जबकि चेकआउट https सक्षम है।

हार्ड-कोडेड संसाधनों (साइट के शीर्षक में यानी प्रचार बैनर) गैर प्रोटोकॉल संबंधित URL द्वारा संदर्भित कर रहे हैं (यानी http://example.com/banner.jpg), https सक्षम चेकआउट ग्राहकों तक पहुंचना एक नहीं बल्कि अमित्र

के साथ स्वागत किया जाएगा " इस पृष्ठ पर असुरक्षित तत्व हैं "

प्रॉम्प्ट - जैसा कि आप कल्पना कर सकते हैं, औसत गैर-तकनीक-समझदार व्यक्ति को फेंकता है।

यदि उपर्युक्त संसाधन //example.com/banner.jpg के माध्यम से संदर्भित किया गया है, तो ब्राउज़र उचित प्रोटोकॉल को पूर्ववत करने का ख्याल रखता है।

टीएल; डॉ: मिश्रित http/https वातावरण की थोड़ी सी संभावना के साथ, अपने संसाधनों को लोड करने के लिए केवल डबल स्लैश/प्रोटोकॉल सापेक्ष यूआरएल का उपयोग करें - यह मानते हुए कि सामग्री की मेजबानी करने वाला होस्ट http और https दोनों सक्षम है।

+0

सावधान हालांकि, यदि आप SharePoint 2010 SP में ऐसा करते हैं यदि आपकी सामग्री लेखक सार्वजनिक साइट पर उपभोग किए गए पृष्ठ के लिए एक सुरक्षित साइट पर संलेखन कर रहे हैं तो स्वचालित रूप से टैग को https के रूप में बदलें। छवि हमेशा http accessed url पर https होगी। टेलीरिक रेड संपादक के साथ पुष्टि की .... वेनिला एसपी के बारे में निश्चित नहीं है। – Marc

+3

हां, लेकिन एक भी स्लैश क्यों नहीं? क्या वह वही काम नहीं करता है? – mckoss

+11

@mckoss: फ़ाइल एक ही डोमेन पर है, तो एक स्लैश शानदार काम करता है। मैं निश्चित रूप से 'http: s: // mydomain.com/resource.jpg' को'/resource.jpg' संदर्भित करके प्राप्त कर सकता हूं। 'Http (s): // some-other-dudes-domain.com/other-resource.jpg' के लिए, एकल स्लैश स्पष्ट रूप से काम नहीं करेगा। – vzwick

7

यह अनुरोध के आधार पर स्वचालित रूप से https या http जोड़ देगा।

+5

यह ध्यान देने योग्य है कि यह सिर्फ http या https नहीं बल्कि ब्राउज़र का समर्थन करने वाले किसी अन्य प्रोटोकॉल को भी पॉप्युलेट करेगा। उदाहरण के लिए एफ़टीपी। यह ब्राउज़र को उसी प्रोटोकॉल का उपयोग करने के लिए कहता है जिसका उपयोग किया जा रहा है। (एक पुरानी पोस्ट पर टिप्पणी करने के लिए खेद है!) – kirgy

संबंधित मुद्दे