GitHub पर होस्ट की गई बाहरी जावास्क्रिप्ट फ़ाइल को लिंक और निष्पादित करें


545

जब मैं स्थानीय जावास्क्रिप्ट फ़ाइल के लिंक किए गए संदर्भ को गीथहब कच्चे संस्करण में बदलने की कोशिश करता हूं तो मेरी परीक्षण फ़ाइल काम करना बंद कर देती है। त्रुटि है:

स्क्रिप्ट को निष्पादित करने से मना कर दिया गया ... क्योंकि उसका MIME प्रकार ( text/plain) निष्पादन योग्य नहीं है, और MIME प्रकार की सख्त जाँच सक्षम है।

क्या इस व्यवहार को अक्षम करने का कोई तरीका है या कोई सेवा है जो GitHub को कच्ची फाइलों से जोड़ने की अनुमति देती है?

काम कोड:

<script src="bootstrap-wysiwyg.js"></script>

गैर-काम कोड:

<script src="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js"></script>

3
rawgit.com अब नया डोमेन है
मुहम्मद उमर


1
@MuhammadUmer - केवल तभी जब आपके स्रोत की फाइलें कभी नहीं बदलतीं । rawgitकैश कभी अपडेट नहीं होता
vsync

3
2019: बस सभी ANSWERS लोगों को RAW या RAWGIT की सैर कराएँ। रावजीत की मौत हो चुकी है। उत्तर से chharwey तक नीचे जाएं और इसे ऊपर तक पहुंचने तक बढ़ाएं। यह सबसे अच्छा है: सबसे सरल, जो आधिकारिक गिटहब पसंदीदा दृष्टिकोण का उपयोग करता है।
मार्को फॉस्टिनेली

1
Jsdelivr.com/?docs=gh का प्रयोग करें , यह काम करता है
AuthorProxy

जवाबों:


1018

वहाँ है का उपयोग करके, इस के लिए एक अच्छा वैकल्पिक हल, अब jsdelivr.net

चरण :

  1. GitHub पर अपना लिंक ढूंढें, और "रॉ" संस्करण पर क्लिक करें।
  2. URL कॉपी करें।
  3. बदलें raw.githubusercontent.comकरने के लिएcdn.jsdelivr.net
  4. /gh/अपने यूज़रनेम से पहले डालें ।
  5. branchनाम हटाओ ।
  6. (वैकल्पिक) उस संस्करण को डालें जिसे आप लिंक करना चाहते हैं, जैसे @version(यदि आप ऐसा नहीं करते हैं, तो आपको नवीनतम मिलेगा - जिससे दीर्घकालिक कैशिंग हो सकती है)

उदाहरण :

http://raw.githubusercontent.com/<username>/<repo>/<branch>/path/to/file.js

नवीनतम संस्करण प्राप्त करने के लिए इस URL का उपयोग करें:

http://cdn.jsdelivr.net/gh/<username>/<repo>/path/to/file.js

एक विशिष्ट संस्करण प्राप्त करने या हैश करने के लिए इस URL का उपयोग करें:

http://cdn.jsdelivr.net/gh/<username>/<repo>@<version or hash>/path/to/file.js

उत्पादन वातावरण के लिए , शाखा के बजाय एक विशिष्ट टैग या कमिट-हैश को लक्षित करने पर विचार करें। नवीनतम लिंक का उपयोग करने से फ़ाइल का दीर्घकालिक कैशिंग हो सकता है, जिससे आपका लिंक अपडेट नहीं हो सकता है क्योंकि आप नए संस्करणों को धक्का देते हैं। किसी फ़ाइल को कम-हैश या टैग द्वारा लिंक करना संस्करण के लिए लिंक को विशिष्ट बनाता है।


इसकी आवश्यकता क्यों है?

2013 में, GitHub ने उपयोग करना शुरू कर दिया X-Content-Type-Options: nosniff, जो कि अधिक आधुनिक ब्राउज़र को सख्त MIME प्रकार की जाँच को लागू करने का निर्देश देता है। यह तब सर्वर द्वारा लौटाए गए MIME प्रकार में कच्ची फ़ाइलों को लौटाता है, जिससे ब्राउज़र को फ़ाइल का उपयोग करने से रोका जा सके (यदि ब्राउज़र सेटिंग का सम्मान करता है)।

इस विषय पर पृष्ठभूमि के लिए, कृपया इस चर्चा सूत्र को देखें ।


14
जिस्ट के लिए भी काम करता है। मैं के gist.githubusercontent.comसाथ बदलने में सक्षम था rawgist.comऔर यह काम कर रहा है।
हरदिवस ३१'१५

3
मैं नहीं जानता कि कौन इस साइट को रॉन्जिट बनाता है, लेकिन उत्पादन में इसका उपयोग नहीं करता है। आपके पास एक अज्ञात तृतीय पक्ष होगा जो आपकी साइट में किसी भी जावास्क्रिप्ट को इंजेक्ट कर सकता है।
neves

1
@ मैक्सीज क्रैस्कीज़ - हाँ - पृष्ठ स्पष्ट रूप से आपको इस लिंक के लिए, शाखा लिंक के बजाय, एक विशिष्ट-विशिष्ट लिंक का उपयोग करने के लिए प्रोत्साहित करता है।
ट्रॉय अल्फोर्ड

4
rawgit अब (2018/10/08) के रूप में बंद कर दिया जाता है: rawgit.com । इस उत्तर को अपडेट करने की अनुशंसा करें।
छरवे

1
इसे इंगित करने के लिए धन्यवाद @chharvey - मैंने jsdelivr.net को प्रतिबिंबित करने के लिए उत्तर अपडेट किया है
Troy Alford

56

यह अब संभव नहीं है। GitHub ने जावास्क्रिप्ट हॉटलिंकिंग को स्पष्ट रूप से अक्षम कर दिया है, और ब्राउज़र के नए संस्करण उस सेटिंग का सम्मान करते हैं।

सिर ऊपर: क्रोम और फ़ायरफ़ॉक्स पर आने वाले nnniff हेडर समर्थन


25

rawgithub.comrawgit.comअब उपरोक्त उदाहरण पर पुनर्निर्देश किया जाएगा

http://rawgit.com/user/package/master/link.min.js


Rawgit.com पर जाएँ और फ़ाइल या जिस्ट के लिए यूआरएल पेस्ट करें। यह आपके लिए एक वैध url उत्पन्न करेगा।
मार्सेलो वाणी

8
rawgit अब (2018/10/08) के रूप में बंद कर दिया जाता है: rawgit.com । इस उत्तर को अपडेट करने की अनुशंसा करें।
छुरी

10

GitHub Pages GitHub इस समस्या का आधिकारिक समाधान है।

raw.githubusercontentसभी फ़ाइलें text/plainMIME प्रकार का उपयोग करती हैं , भले ही वह फ़ाइल CSS या JavaScript फ़ाइल हो। तो https://raw.githubusercontent.com/‹user›/‹repo›/‹branch›/‹filepath›सही MIME टाइप नहीं होगा, बल्कि एक प्लेटेक्स्ट फ़ाइल होगी, और इसके माध्यम से लिंक करना <link href="..."/>या <script src="..."></script>काम नहीं करेगा - CSS लागू नहीं होगा / JS नहीं चलेगा।

GitHub Pages एक विशेष URL पर आपके रेपो को होस्ट करता है, इसलिए आपको बस अपनी फाइलों में चेक-इन करना है और पुश करना है। ध्यान दें कि ज्यादातर मामलों में, GitHub पेज एक विशेष शाखा के लिए प्रतिबद्ध करने की आवश्यकता है, gh-pages

आपकी नई साइट पर, जो आमतौर पर https://‹user›.github.io/‹repo›, gh-pagesशाखा के लिए प्रतिबद्ध प्रत्येक फ़ाइल (सबसे हाल की प्रतिबद्ध) इस url पर मौजूद है। तो फिर आप अपने js फ़ाइल के माध्यम से लिंक कर सकते हैं <script src="https://‹user›.github.io/‹repo›/file.js"></script>, और यह सही MIME प्रकार होगा।

क्या आपके पास फाइल्स हैं?

व्यक्तिगत रूप से, मेरी सिफारिश इस शाखा को समानांतर चलाने की है master। पर gh-pagesशाखा, आप अपने संपादित कर सकते हैं .gitignoreकरने के लिए फ़ाइल में जाँच , सभी जिले / निर्माण फ़ाइलें आप अपनी साइट (जैसे अगर आप किसी भी न्यूनतम किया गया है / संकलित फ़ाइलें) के लिए की जरूरत है, जबकि उन्हें रखने पर ध्यान नहीं दिया अपने पर masterशाखा। यह उपयोगी है क्योंकि आप आमतौर पर अपने नियमित रेपो में फ़ाइलों के निर्माण में परिवर्तन को ट्रैक नहीं करना चाहते हैं। हर बार जब आप अपने होस्ट की गई फ़ाइलों को अद्यतन करने के लिए, बस विलय चाहते हैं masterमें gh-pages, पुनर्निर्माण, प्रतिबद्ध, और फिर धक्का।

(protip: आप इन चरणों के साथ एक ही प्रतिबद्ध में विलय और पुनर्निर्माण कर सकते हैं :)

$ git checkout gh-pages
$ git merge --no-ff --no-commit master  # prepare the merge but dont commit it (as if there were a merge conflict)
$ npm run build                         # (or whatever your build process is)
$ git add .                             # stage the newly built files
$ git merge --continue                  # commit the merge
$ git push origin gh-pages

8

उपरोक्त उत्तर स्पष्ट रूप से प्रश्न का उत्तर देते हैं लेकिन मैं एक और विकल्प प्रदान करना चाहता हूं - समान समस्या को हल करने के लिए एक अलग दृष्टिकोण / दृष्टिकोण।

आप फ़ाइलों के X-Content-Type-Optionsलिए प्रतिक्रिया हेडर को निकालने के लिए ब्राउज़र एक्सटेंशन का भी उपयोग कर सकते हैं raw.githubusercontent.com। प्रतिक्रिया शीर्षकों को संशोधित करने के लिए कुछ ब्राउज़र एक्सटेंशन हैं।

  1. अनुरोध: क्रोम + फ़ायरफ़ॉक्स
  2. हेडर को संशोधित करें: फ़ायरफ़ॉक्स

यदि आप अनुरोध का उपयोग करते हैं, तो मैं दो समाधान सुझा सकता हूं

समाधान 1: संशोधित हेडर नियम का उपयोग करें और प्रतिक्रिया हेडर निकालें

कदम

  1. से Requestly स्थापित http://www.requestly.in
  2. नियम पृष्ठ पर जाएं
  3. नियम बनाने के लिए Add Icon पर क्लिक करें
  4. हेडर को संशोधित करें का चयन करें
  5. एक नाम और विवरण दें
  6. चुनें Remove-> Response->X-Content-Type-Options
  7. स्रोत फ़ील्ड में, दर्ज करें Url-> Contains->raw.githubusercontent.com

समाधान 2: प्रतिस्थापन मेजबान नियम का उपयोग करें

  1. से Requestly स्थापित http://www.requestly.in
  2. नियम पृष्ठ पर जाएं
  3. नियम बनाने के लिए Add Icon पर क्लिक करें
  4. बदलें raw.githubusercontent.comके साथrawgit.com

अधिक जानकारी के लिए इस स्क्रीनशॉट को देखेंयहाँ छवि विवरण दर्ज करें

परीक्षा कैसे दें

अगर हम अपने कोड में स्क्रिप्ट के रूप में कच्चे गिट्ट फ़ाइलों का उपयोग कर सकते हैं, तो हमने एक सरल जेएस फिडल बनाया है। यहाँ निम्न कोड के साथ फिडल है

<center id="msg"></center>

<script src="https://raw.githubusercontent.com/sachinjain024/practicebook/master/web-extensions-master/storage/background.js"></script>
<script>
try {
  if (typeof BG.Methods !== 'undefoned') {
    document.getElementById('msg').innerHTML = 'Script evaluated successfully!';
  }
} catch (e) {
  document.getElementById('msg').innerHTML = 'Problem evaluating script';
}
</script>

यदि आप देखते हैं Script evaluated successfully!, तो इसका मतलब है कि आप अपने कोड में कच्ची गिटब फाइल का उपयोग करने में सक्षम हैं अन्यथा Problem evaluating scriptइंगित करता है कि कच्चे गिटब स्रोत से स्क्रिप्ट निष्पादित करते समय कुछ समस्या है।

मैंने इस बारे में Requestly ब्लॉग पर एक लेख भी लिखा था । कृपया इसे अधिक जानकारी के लिए देखें।

आशा है ये मदद करेगा!!

डिस्क्लेमर: मैं रिक्वेस्ट का लेखक हूं इसलिए आप किसी भी चीज को दोष दे सकते हैं जो आपको पसंद नहीं है।


8

https://raw.githack.com/

इस साइट के लिए एक सीडीएन की आपूर्ति पाया

  • nosniffhttp हैडर हटाएं
  • mime typeext नाम से ठीक करें

और यह साइट:

https://rawgit.com/

नोट: रॉगिट अपने उपयोगी जीवन के अंत तक पहुँच गया है


5

चीजों को स्पष्ट और छोटा करने के लिए

//raw.githubusercontent.com -> //rawgit.com

ध्यान दें कि यह रॉवजीत के विकास होस्टिंग द्वारा संभाला गया है न कि उत्पादन होस्टिंग के लिए उनकी सीडीएन


डिफ़ॉल्ट कच्चा URL इस उत्तर के बाद से परिवर्तित हो गया लगता है इसलिए अब रूपांतरण है https://raw.githubusercontent.com-> https://rawgit.comअन्यथा यह उत्तर स्पष्ट है और काम करता है।
mikym

4
rawgit अब (2018/10/08) के रूप में बंद कर दिया जाता है: rawgit.com । इस उत्तर को अपडेट करने की अनुशंसा करें।
छरवे

4

मेरा उपयोग मामला मेरे Bitbucket खाते से ' बुकमार्कलेट्स ' डिरेल्टी को लोड करने के लिए था, जिसमें Github के समान प्रतिबंध हैं। मेरे आसपास आया काम स्क्रिप्ट के लिए AJAX के लिए था और evalप्रतिक्रिया स्ट्रिंग पर चलता है, नीचे स्निपेट उस दृष्टिकोण पर आधारित है।

<script>
    var sScriptURL ='<script-URL-here>'; 
    var oReq = new XMLHttpRequest(); 
    oReq.addEventListener("load", 
       function fLoad() {eval(this.responseText + '\r\n//# sourceURL=' + sScriptURL)}); 
    oReq.open("GET", sScriptURL); oReq.send(); false;
</script>

ध्यान दें कि sourceURLटिप्पणी को जोड़ना ब्राउज़र के डेवलपर टूल के भीतर स्क्रिप्ट के डिबगिंग के लिए अनुमति देना है।


1

जब एक फ़ाइल को जीथब पर अपलोड किया जाता है तो आप इसे बाहरी स्रोत या मुफ्त होस्टिंग के रूप में उपयोग कर सकते हैं। ट्रॉय अल्फोर्ड ने इसे ऊपर अच्छी तरह से समझाया है। लेकिन इसे आसान बनाने के लिए मैं आपको कुछ आसान उपाय बताता हूँ, तो आप अपनी साइट में एक github कच्ची फ़ाइल का उपयोग कर सकते हैं:

यहाँ आपकी फ़ाइल का लिंक दिया गया है:

https://raw.githubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

अब इसे निष्पादित करने के लिए आपको कच्चे और गीथुबसर्कंटेंट के बीच https: // और डॉट () हटाना होगा

ऐशे ही:

rawgithubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

अब जब आप इस लिंक पर जाएंगे तो आपको एक लिंक मिलेगा जिसका उपयोग आपकी जावास्क्रिप्ट को कॉल करने के लिए किया जा सकता है:

यहाँ अंतिम कड़ी है:

https://rawgit.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

इसी तरह यदि आप एक सीएसएस फ़ाइल की मेजबानी करते हैं तो आपको इसे ऊपर बताए अनुसार करना होगा। जीथब पर होस्ट की गई अपनी बाहरी सीएसएस या जावास्क्रिप्ट फ़ाइल को कॉल करने के लिए सरल लिंक प्राप्त करना सबसे आसान तरीका है।

मुझे आशा है कि यह मददगार है।

संदर्भ URL: http://101helper.blogspot.com/2015/11/store-blogger-codes-on-github-boost-blogger-speed.html


3
rawgit अब (2018/10/08) के रूप में बंद कर दिया जाता है: rawgit.com । इस उत्तर को अपडेट करने की अनुशंसा करें।
छुरी

1

मैंने पाया कि फ़ाइल की शुरुआत में टिप्पणियों के कारण त्रुटि दिखाई गई थी, आप इस मुद्दे को हल कर सकते हैं, बिना टिप्पणी के अपनी खुद की फ़ाइल बनाकर और जोर से धक्का दें, यह कोई त्रुटि नहीं दिखाता है

प्रमाण के लिए आप इन दो फ़ाइल को आसान पृष्ठांकन के समान कोड के साथ आज़मा सकते हैं:

टिप्पणी के बीना

टिप्पणी के साथ


1

मेरे पास आपके जैसा ही मुद्दा था, मैंने जो किया वह बदलाव है

<script type="application/javascript" src="bootstrap-wysiwyg.js"></script>

इससे मेरा काम बनता है।


क्या से क्या बदलना? कृपया पहले और बाद में दिखाएं
अलेक्जेंडर मिल्स

0

सबसे सरल तरीका:
<script type="text/plain" src="http://raw.githubusercontent.com/user/repo/branch/file.js"></script>
GitHub द्वारा सेवा की गई,
और

बहुत

विश्वसनीय। बिना के
साथtext/plain
यहाँ छवि विवरण दर्ज करेंtext/plain
यहाँ छवि विवरण दर्ज करें


यह सबसे अच्छा समाधान है, यह सिर्फ काम करता है और बहुत समझ में आता है।
a20

2
नहीं। यह सब स्क्रिप्ट को चलने से भी रोकता है
स्टीवन पेनी

2
यह अब जल्द ही काम नहीं करेगा। मेरे एंड्रॉइड डिवाइस लॉगकैट से: "एक अमान्य प्रकार / भाषा विशेषताओं के साथ स्क्रिप्टिंग को हटा दिया गया है और जनवरी 2017 के आसपास M56 में हटा दिया जाएगा । अधिक जानकारी के लिए chromestatus.com/features/5760718284521472 देखें ।"
जेन्स हूक

0

raw.github.comसंपत्ति दाखिल करने के लिए पूरी तरह से कच्ची पहुंच नहीं है, लेकिन रेल द्वारा प्रस्तुत एक दृश्य। इसलिए पहुंच raw.github.comजरूरत से ज्यादा भारी है। मुझे नहीं पता कि raw.github.comएक रेल दृश्य के रूप में क्यों लागू किया गया है। इस रूट समस्या को ठीक करने के बजाय, GitHub ने एक X-Content-Type-Options: nosniffहेडर जोड़ा ।

युक्ति:

  • स्क्रिप्ट को डाल दिया user.github.io/repo
  • एक तीसरी पार्टी CDN का उपयोग करें जैसे rawgit.com।

इसके लिए किसी और को भ्रमित करने के लिए, उन्होंने जानबूझकर ऐसा किया। आप raw.github.comफ़ाइलों को लोड करने के लिए बस का उपयोग करने में सक्षम हो - और फिर github एहसास हुआ कि वे एक CDN के रूप में इस्तेमाल किया जा रहा है, जो उन्हें बहुत अधिक यातायात पैदा कर रहा था। परिणामस्वरूप, उन्होंने इसे X-Content-Type-Options: nosniffहेडर के साथ इस प्रकार के प्रतिपादन में बदल दिया , विशेष रूप से लोगों को उनकी सेवा का उपयोग करने से रोकने के लिए।
ट्रॉय अल्फोर्ड

0

वैकल्पिक रूप से, यदि आपका मार्कअप सर्वर-साइड जनरेट कर रहा है, तो आप बस ला सकते हैं और इंजेक्ट कर सकते हैं। उदाहरण के लिए, JSTL में आप ऐसा कर सकते हैं:

<script type="text/javascript">
    <c:import url="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js" />
</script>

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


0

उदाहरण


मूल

https://raw.githubusercontent.com/antelove19/qrcodejs/master/qrcode.min.js

cdn.jsdelivr.net

https://cdn.jsdelivr.net/gh/antelove19/qrcodejs/qrcode.min.js
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.