Relier et exécuter le fichier JavaScript externe hébergé sur GitHub
lorsque j'essaie de changer la référence liée d'un fichier JavaScript local vers une version brute GitHub, mon fichier test cesse de fonctionner. L'erreur est:
a refusé d'Exécuter script à partir de ... parce que son type MIME (
text/plain
) n'est pas exécutable, et la vérification de type MIME stricte est activée.
Est-il un moyen de désactiver ce comportement, ou est-il un service qui permet de relier à GitHub fichiers raw?
code de travail:
<script src="bootstrap-wysiwyg.js"></script>
code inactif:
<script src="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js"></script>
13 réponses
il est une bonne solution pour cela, maintenant, en utilisant rawgit.com .
Étapes :
- Trouvez votre lien sur GitHub, et cliquez sur la version" Raw " du fichier.
- copier l'URL, et le lien vers elle.
- changer
raw.githubusercontent.com
enrawgit.com
(non-production) oucdn.rawgit.com
(production)
exemple :
http://raw.githubusercontent.com/user/repo/branch/file.js
utiliser cette URL pour le développement:
http://rawgit.com/user/repo/branch/file.js
utilisez cette URL en production:
http://cdn.rawgit.com/user/repo/tag/file.js
pour les environnements de production , envisagez de cibler une étiquette spécifique ou de commettre-hachage plutôt que la branche. RawGit never met à jour le fichier stocké à un chemin donné une fois qu'il est mis en cache - ainsi le fait de créer un lien vers un fichier par le nom de la branche fera que votre lien ne sera jamais mis à jour - même si vous faites des propagations supplémentaires. Le lien vers un fichier par commit-hash ou tag rend le lien unique à la version.
Pourquoi est-ce nécessaire?
GitHub a commencé à utiliser X-Content-Type-Options: nosniff
, qui en dit plus
navigateurs modernes pour appliquer la vérification de type MIME stricte. Il renvoie ensuite le brut
les fichiers dans un type MIME retournés par le serveur, empêchant le navigateur de l'aide
le fichier comme prévu (si le navigateur honore le paramètre).
pour plus d'information sur ce sujet, veuillez vous référer à ce sujet de discussion .
Ce n'est plus possible. GitHub a explicitement désactivé JavaScript la connexion à chaud et les versions plus récentes des navigateurs respectent ce réglage.
rawgithub.com
redirige vers rawgit.com
de sorte que l'exemple ci-dessus serait maintenant
http://rawgit.com/user/package/master/link.min.js
pour rendre les choses claires et courtes
//raw.githubusercontent.com
--> //rawgit.com
notez que ceci est géré par l'hébergement de développement de rawgit et non par leur cdn pour l'hébergement de production
les réponses ci - dessus répondent clairement à la question, mais je veux proposer une autre solution-une approche différente pour résoudre le problème similaire.
vous pouvez également utiliser l'extension du navigateur pour supprimer X-Content-Type-Options
en-tête de réponse pour raw.githubusercontent.com
fichiers. Il y a quelques extensions de navigateur pour modifier les en-têtes de réponse.
si vous utilisez Requestly, je peux suggérer deux solutions
Solution 1: utiliser la règle Modifier les en-têtes et supprimer l'en-tête de réponse
Étapes
- installer Requestly from http://www.requestly.in
- Aller à les Règles de la Page
- cliquez sur L'icône Ajouter pour créer une règle
- Sélectionner Modifier En-Têtes
- Donner un Nom et une Description
- sélectionner
Remove
->Response
->X-Content-Type-Options
- dans le champ Source, entrez
Url
->Contains
->raw.githubusercontent.com
Solution 2: Remplacer la règle de l'hôte
- Installer Requestly de http://www.requestly.in
- Aller à les Règles de la Page
- cliquez sur L'icône Ajouter pour créer une règle
- remplacer
raw.githubusercontent.com
parrawgit.com
Vérifiez cette capture d'écran pour plus de détails
Comment faire l'essai
nous avons créé un violon js simple pour tester si nous peut utiliser des fichiers GitHub bruts comme scripts dans notre code. Voici le violon avec le code suivant
<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>
si vous voyez Script evaluated successfully!
, cela signifie que vous pouvez utiliser le fichier brut github dans votre code
Sinon Problem evaluating script
indique qu'il y a un problème lors de l'exécution de script à partir de la source brute de github.
j'ai également écrit un article sur blog Requestly à ce sujet. Veuillez vous y référer pour plus de détails.
Espère que cela aide!!
Avertissement: je suis l'auteur de Requestly de Sorte que vous pouvez blâmer pour tout ce que vous n'aimez pas.
mon cas d'utilisation était de charger" bookmarklets " directement à partir de mon compte Bitbucket qui a les mêmes restrictions que Github. Le travail que j'ai fait était D'AJAX pour le script et d'exécuter eval
sur la chaîne de réponse, ci-dessous snippet est basé sur cette approche.
<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>
notez que l'ajout du commentaire sourceURL
permet de déboguer le script dans les outils de développement du navigateur.
trouvé ce site fournir un CDN pour
- supprimer
nosniff
en-tête http - fix
mime type
par ext nom
et ce site:
Lorsqu'un fichier est téléchargé sur github, vous pouvez l'utiliser comme source externe ou d'hébergement gratuit. Troy Alford l'a bien expliqué plus haut. Mais pour le rendre plus facile laissez-moi vous dire quelques étapes faciles puis vous pouvez utiliser un fichier GitHub raw sur votre site:
voici le lien de votre fichier:
https://raw.githubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js
Maintenant, pour l'exécuter, vous devez supprimer https:// et le point( . ) entre raw et githubusercontent
comme ceci:
rawgithubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js
Maintenant, quand vous allez visiter ce lien, vous obtiendrez un lien qui peut être utilisé pour appeler votre javascript:
voici le lien final:
https://rawgit.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js
de même, si vous hébergez un fichier css, vous devez le faire comme indiqué ci-dessus. C'est la façon la plus facile d'obtenir un lien simple pour appeler votre fichier CSS externe ou javascript hébergé sur github.
j'espère que c'est utile.
Referance URL: http://101helper.blogspot.com/2015/11/store-blogger-codes-on-github-boost-blogger-speed.html
j'ai trouvé l'erreur a été montré en raison des commentaires au début du fichier , vous pouvez résoudre ce problème , en créant simplement votre propre fichier sans commentaire et de pousser à git, il ne montre aucune erreur ""
pour preuve, vous pouvez essayer ces deux fichiers avec le même code de pagination facile:
raw.github.com
n'est pas vraiment cru accès au fichier actif,
mais une vue rendue par des Rails.
L'accès à raw.github.com
est donc beaucoup plus lourd que nécessaire.
Je ne sais pas pourquoi raw.github.com
est implémenté comme une vue de Rails.
Au lieu de corriger ce problème de route, GitHub a ajouté un en-tête X-Content-Type-Options: nosniff
.
solution de contournement:
- Mettre le script de
user.github.io/repo
- utiliser un tiers CDN comme rawgit.com.
alternativement, si vous générez votre markup côté serveur, vous pouvez simplement aller chercher et injecter. Par exemple, dans JSTL vous pouvez faire ceci:
<script type="text/javascript">
<c:import url="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js" />
</script>
ils ne permettent pas de faire de la literie chaude pour une raison, donc probablement mauvaise forme si vous voulez être un bon citoyen. Je vous suggère de mettre en cache ce javascript et de ne le récupérer que périodiquement comme bon vous semble.
j'ai eu le même problème que vous, ce que j'ai fait est de changer en
<script type="application/javascript" src="bootstrap-wysiwyg.js"></script>
ça me va.