Lorsque j'essaie de changer la référence liée d'un fichier JavaScript local en une version brute de GitHub, mon fichier de test cesse de fonctionner. L'erreur est:
Refus d'exécuter le script à partir de ... car son type MIME (
text/plain
) n'est pas exécutable et la vérification stricte du type MIME est activée.
Existe-t-il un moyen de désactiver ce comportement ou existe-t-il un service qui permet de créer des liens vers des fichiers bruts GitHub?
Code de travail:
<script src="bootstrap-wysiwyg.js"></script>
Code non fonctionnel:
<script src="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js"></script>
javascript
github
AuthorProxy
la source
la source
rawgit
le cache ne se met jamais à jour .Réponses:
Il existe une bonne solution pour cela, maintenant, en utilisant jsdelivr.net .
Étapes :
raw.githubusercontent.com
parcdn.jsdelivr.net
/gh/
avant votre nom d'utilisateur.branch
nom.@version
(si vous ne le faites pas, vous obtiendrez la dernière version - ce qui peut entraîner une mise en cache à long terme)Exemples :
Utilisez cette URL pour obtenir la dernière version:
Utilisez cette URL pour obtenir une version spécifique ou valider le hachage:
Pour les environnements de production , pensez à cibler une balise ou un hachage de validation spécifique plutôt que la branche. L'utilisation du dernier lien peut entraîner une mise en cache à long terme du fichier, entraînant la non-mise à jour de votre lien lorsque vous envoyez de nouvelles versions. La liaison à un fichier par commit-hash ou tag rend le lien unique à la version.
Pourquoi est-ce nécessaire?
En 2013, GitHub a commencé à utiliser
X-Content-Type-Options: nosniff
, ce qui demande aux navigateurs plus modernes d'appliquer la vérification stricte du type MIME. Il retourne ensuite les fichiers bruts dans un type MIME retourné par le serveur, empêchant le navigateur d'utiliser le fichier comme prévu (si le navigateur respecte le paramètre).Pour plus d'informations sur ce sujet, veuillez vous référer à ce fil de discussion .
la source
gist.githubusercontent.com
avecrawgist.com
et obtenu ce travail.Ce n'est plus possible. GitHub a explicitement désactivé le hotlinking JavaScript et les nouvelles versions de navigateurs respectent ce paramètre.
Attention: le support des en-têtes nosniff arrive sur Chrome et Firefox
la source
rawgithub.com
redirige versrawgit.com
Donc l'exemple ci-dessus serait maintenanthttp://rawgit.com/user/package/master/link.min.js
la source
GitHub Pages est la solution officielle de GitHub à ce problème.
raw.githubusercontent
oblige tous les fichiers à utiliser letext/plain
type MIME, même s'il s'agit d'un fichier CSS ou JavaScript. Donc, allerhttps://raw.githubusercontent.com/‹user›/‹repo›/‹branch›/‹filepath›
ne sera pas le type MIME correct, mais un fichier en clair et le lier via<link href="..."/>
ou<script src="..."></script>
ne fonctionnera pas - le CSS ne s'appliquera pas / le JS ne fonctionnera pas.GitHub Pages héberge votre dépôt à une URL spéciale, donc tout ce que vous avez à faire est d'archiver vos fichiers et de pousser. Notez que dans la plupart des cas, GitHub Pages vous oblige à vous engager dans une branche spéciale,
gh-pages
.Sur votre nouveau site, qui est généralement
https://‹user›.github.io/‹repo›
, tous les fichiers validés dans lagh-pages
branche (le commit le plus récent) sont présents à cette URL. Vous pouvez donc créer un lien vers votre fichier js via<script src="https://‹user›.github.io/‹repo›/file.js"></script>
, et ce sera le type MIME correct.Avez-vous des fichiers de construction?
Personnellement, ma recommandation est d'exécuter cette branche parallèlement à
master
. Sur lagh-pages
branche, vous pouvez éditer votre.gitignore
fichier pour archiver tous les fichiers dist / build dont vous avez besoin pour votre site (par exemple si vous avez des fichiers minifiés / compilés), tout en les ignorant sur votremaster
branche. Ceci est utile car vous ne souhaitez généralement pas suivre les modifications apportées aux fichiers de build dans votre référentiel standard. Chaque fois que vous souhaitez mettre à jour vos fichiers hébergés, fusionner simplementmaster
engh-pages
, reconstruire, engager, puis pousser.(protip: vous pouvez fusionner et reconstruire dans le même commit avec ces étapes :)
la source
Les réponses ci-dessus répondent clairement à la question, mais je veux proposer une autre alternative - Une vision / approche différente pour résoudre le problème similaire.
Vous pouvez également utiliser l'extension de navigateur pour supprimer l'en-
X-Content-Type-Options
tête de réponse desraw.githubusercontent.com
fichiers. Il existe 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: utilisez la règle de modification des en-têtes et supprimez l'en-tête de réponse
Pas
Remove
->Response
->X-Content-Type-Options
Url
->Contains
->raw.githubusercontent.com
Solution 2: utiliser la règle de remplacement d'hôte
raw.githubusercontent.com
parrawgit.com
Consultez cette capture d'écran pour plus de détails
Comment tester
Nous avons créé un simple JS Fiddle pour tester si nous pouvons utiliser des fichiers github bruts comme scripts dans notre code. Voici le violon avec le code suivant
Si vous voyez
Script evaluated successfully!
, cela signifie que vous pouvez utiliser un fichier github brut dans votre code Sinon, celaProblem evaluating script
indique qu'il y a un problème lors de l'exécution du script à partir de la source github brute.J'ai également écrit un article sur le blog Requestly à ce sujet. Veuillez le consulter pour plus de détails.
J'espère que cela aide!!
Avertissement: je suis l'auteur de Requestly afin que vous puissiez blâmer pour tout ce que vous n'aimez pas.
la source
https://raw.githack.com/
trouvé ce site fournir un CDN pour
nosniff
tête httpmime type
par nom extet ce site:
https://rawgit.com/
la source
Pour que les choses soient claires et courtes
//raw.githubusercontent.com
->//rawgit.com
Notez que cela est géré par l'hébergement de développement de rawgit et non par leur cdn pour l'hébergement de production
la source
https://raw.githubusercontent.com
->https://rawgit.com
Sinon, cette réponse est la plus claire et fonctionne.Mon cas d'utilisation était de charger directement des ` ` bookmarklets '' depuis mon compte Bitbucket qui a les mêmes restrictions que Github. Le travail autour de moi est venu à AJAX pour le script et exécuté
eval
sur la chaîne de réponse, l'extrait ci-dessous est basé sur cette approche.Notez que l'ajout d'un
sourceURL
commentaire permet de déboguer le script dans les outils de développement du navigateur.la source
Lorsqu'un fichier est téléchargé sur github, vous pouvez l'utiliser comme source externe ou hébergement gratuit. Troy Alford l'a expliqué bien ci-dessus. Mais pour vous faciliter la tâche, permettez-moi de vous expliquer quelques étapes simples, alors vous pouvez utiliser un fichier brut github dans 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 ça:
rawgithubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js
Maintenant, lorsque vous visiterez 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 mentionné ci-dessus. C'est le moyen le plus simple d'obtenir un lien simple pour appeler votre fichier css ou javascript externe hébergé sur github.
J'espère que ceci est utile.
URL de référence: http://101helper.blogspot.com/2015/11/store-blogger-codes-on-github-boost-blogger-speed.html
la source
J'ai trouvé que l'erreur était due aux commentaires au début du fichier, vous pouvez résoudre ce problème, en créant simplement votre propre fichier sans commentaire et en poussant vers git, il ne montre aucune erreur
Pour preuve, vous pouvez essayer ces deux fichiers avec le même code de pagination facile:
sans commentaire
avec commentaire
la source
J'ai eu le même problème que vous, j'ai changé pour
Ça marche pour moi.
la source
Le moyen le plus simple:
<script type="text/plain" src="http://raw.githubusercontent.com/user/repo/branch/file.js"></script>
servi par GitHub,
et
très
fiable.Avec
text/plain
Sans
text/plain
la source
raw.github.com
n'est pas vraiment un accès brut à un fichier, mais une vue rendue par Rails. L'accèsraw.github.com
est donc beaucoup plus lourd que nécessaire. Je ne sais pas pourquoiraw.github.com
est implémenté en tant que vue Rails. Au lieu de résoudre ce problème de route, GitHub a ajouté un en-X-Content-Type-Options: nosniff
tête.Solution de contournement:
user.github.io/repo
la source
raw.github.com
Auparavant, vous pouviez simplement utiliser pour charger des fichiers - puis github s'est rendu compte qu'ils étaient utilisés comme CDN, ce qui leur causait beaucoup trop de trafic. En conséquence, ils l'ont changé pour ce type de rendu avec l'en-X-Content-Type-Options: nosniff
tête, spécifiquement pour empêcher les gens d'utiliser leur service de cette façon.Alternativement, si vous générez votre balisage côté serveur, vous pouvez simplement récupérer et injecter. Par exemple, dans JSTL, vous pouvez faire ceci:
Ils n'autorisent pas le hotlinking pour une raison, donc probablement une 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.
la source
Exemple
original
cdn.jsdelivr.net
la source