Kiedy próbuję zmienić odnośnik lokalnego pliku JavaScript na surową wersję GitHub, mój plik testowy przestaje działać. Błąd jest następujący:
Odmowa wykonania skryptu z ..., ponieważ jego typ MIME (
text/plain
) nie jest wykonywalny, a ścisłe sprawdzanie typu MIME jest włączone.
Czy istnieje sposób, aby wyłączyć to zachowanie, czy też istnieje usługa pozwalająca na łączenie się z surowymi plikami GitHub?
Kod roboczy:
<script src="bootstrap-wysiwyg.js"></script>
Kod niedziałający:
<script src="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js"></script>
javascript
github
AutorProxy
źródło
źródło
rawgit
pamięć podręczna nigdy się nie aktualizuje .Odpowiedzi:
Nie jest to dobry obejście tego, teraz, za pomocą jsdelivr.net .
Kroki :
raw.githubusercontent.com
nacdn.jsdelivr.net
/gh/
przed swoją nazwą użytkownika.branch
nazwę.@version
(jeśli tego nie zrobisz, otrzymasz najnowszą - co może powodować długoterminowe buforowanie)Przykłady :
Użyj tego adresu URL, aby uzyskać najnowszą wersję:
Użyj tego adresu URL, aby uzyskać konkretną wersję lub zatwierdzić skrót:
W środowiskach produkcyjnych rozważ wybranie określonego tagu lub skrótu zatwierdzania zamiast gałęzi. Użycie najnowszego linku może spowodować długoterminowe buforowanie pliku, co spowoduje, że nie będzie on aktualizowany podczas przesyłania nowych wersji. Łączenie do pliku za pomocą zatwierdzenia-skrótu lub znacznika czyni link unikalnym dla wersji.
Dlaczego jest to potrzebne?
W 2013 roku GitHub zaczął używać
X-Content-Type-Options: nosniff
, który instruuje bardziej nowoczesne przeglądarki, aby wymuszały ścisłe sprawdzanie typu MIME. Następnie zwraca nieprzetworzone pliki typu MIME zwrócone przez serwer, uniemożliwiając przeglądarce użycie pliku zgodnie z przeznaczeniem (jeśli przeglądarka zaakceptuje to ustawienie).Informacje na ten temat znajdują się w tym wątku dyskusji .
źródło
gist.githubusercontent.com
zrawgist.com
i dostał pracę.To nie jest już możliwe. GitHub wyraźnie wyłączył hotlinkowanie JavaScript, a nowsze wersje przeglądarek przestrzegają tego ustawienia.
Heads up: obsługa nagłówków nosniff w Chrome i Firefox
źródło
rawgithub.com
przekierowuje dorawgit.com
Tak więc powyższy przykład byłby terazhttp://rawgit.com/user/package/master/link.min.js
źródło
GitHub Pages to oficjalne rozwiązanie tego problemu przez GitHub.
raw.githubusercontent
sprawia, że wszystkie pliki używajątext/plain
typu MIME, nawet jeśli plik jest plikiem CSS lub JavaScript. Zatemhttps://raw.githubusercontent.com/‹user›/‹repo›/‹branch›/‹filepath›
nie będzie to poprawny typ MIME, ale zamiast tego plik tekstowy i połączenie go za pomocą<link href="..."/>
lub<script src="..."></script>
nie będzie działać - CSS nie będzie obowiązywał / JS nie będzie działać.Strony GitHub utrzymują Twoje repozytorium pod specjalnym adresem URL, więc wszystko, co musisz zrobić, to sprawdzić swoje pliki i wypchnąć. Należy zauważyć, że w większości przypadków, GitHub Strony wymaga, aby zobowiązać się do specjalnego oddziału
gh-pages
.W nowej witrynie, którą zwykle jest
https://‹user›.github.io/‹repo›
każdy plik przypisany dogh-pages
oddziału (najnowsze zatwierdzenie), znajduje się w tym adresie URL. Więc możesz połączyć się z plikiem js przez<script src="https://‹user›.github.io/‹repo›/file.js"></script>
, a to będzie prawidłowy typ MIME.Czy masz pliki kompilacji?
Osobiście zalecam równoległe uruchomienie tej gałęzi
master
. Wgh-pages
oddziale możesz edytować swój.gitignore
plik, aby sprawdzić wszystkie pliki dist / build, których potrzebujesz na swojej stronie (np. Jeśli masz jakieś zminimalizowane / skompilowane pliki), jednocześnie ignorując je wmaster
oddziale. Jest to przydatne, ponieważ zazwyczaj nie chcesz śledzić zmian w plikach kompilacji w swoim zwykłym repozytorium. Za każdym razem, gdy chcesz zaktualizować hostowane pliki, po prostu połączmaster
sięgh-pages
, przebuduj, zatwierdź, a następnie wypchnij.(protip: możesz scalić i przebudować w tym samym zatwierdzeniu wykonując te kroki :)
źródło
Powyższe odpowiedzi wyraźnie odpowiadają na pytanie, ale chcę podać inną alternatywę - inne spojrzenie / podejście do rozwiązania podobnego problemu.
Możesz także użyć rozszerzenia przeglądarki, aby usunąć
X-Content-Type-Options
nagłówek odpowiedzi dlaraw.githubusercontent.com
plików. Istnieje kilka rozszerzeń przeglądarki do modyfikowania nagłówków odpowiedzi.Jeśli korzystasz z Requestly, mogę zaproponować dwa rozwiązania
Rozwiązanie 1: Użyj zmodyfikuj regułę nagłówków i usuń nagłówek odpowiedzi
Kroki
Remove
->Response
->X-Content-Type-Options
Url
->Contains
->raw.githubusercontent.com
Rozwiązanie 2: Użyj opcji Zastąp regułę hosta
raw.githubusercontent.com
zrawgit.com
Sprawdź ten zrzut ekranu, aby uzyskać więcej informacji
Jak testować
Stworzyliśmy prosty JS Fiddle, aby sprawdzić, czy możemy używać surowych plików github jako skryptów w naszym kodzie. Oto skrzypce z następującym kodem
Jeśli widzisz
Script evaluated successfully!
, oznacza to, że możesz użyć surowego pliku github w swoim kodzie. W przeciwnym razieProblem evaluating script
oznacza to, że wystąpił problem podczas wykonywania skryptu z surowego źródła github.Napisałem również na ten temat artykuł na blogu Requestly . Proszę odnieść się do niego po więcej szczegółów.
Mam nadzieję, że to pomoże!!
Uwaga: Jestem autorem Requestly, więc możesz winić za wszystko, co ci się nie podoba.
źródło
https://raw.githack.com/
znalazłem tę witrynę, dostarczając CDN dla
nosniff
nagłówek httpmime type
przez nazwę exti ta strona:
https://rawgit.com/
źródło
Aby wszystko było jasne i krótkie
//raw.githubusercontent.com
->//rawgit.com
Zauważ, że jest to obsługiwane przez hosting deweloperski rawgit, a nie ich CDN do hostingu produkcyjnego
źródło
https://raw.githubusercontent.com
->https://rawgit.com
W przeciwnym razie ta odpowiedź jest najwyraźniejsza i działa.Mój przypadek użycia polegał na załadowaniu katalogu „ bookmarklets ” z mojego konta Bitbucket, które ma takie same ograniczenia jak Github. Praca, którą wymyśliłem, dotyczyła AJAX-a dla skryptu i działającego
eval
na ciągu odpowiedzi, poniżej fragment oparty jest na tym podejściu.Pamiętaj, że dodanie
sourceURL
komentarza ma umożliwić debugowanie skryptu w narzędziach programistycznych przeglądarki.źródło
Po przesłaniu pliku do github możesz go użyć jako źródła zewnętrznego lub darmowego hostingu. Troy Alford wyjaśnił to znacznie powyżej. Ale aby było to łatwiejsze, pozwól, że powiem ci kilka prostych kroków, a następnie możesz użyć surowego pliku github na swojej stronie:
Oto link do pliku:
https://raw.githubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js
Teraz, aby go wykonać, musisz usunąć https: // i kropkę (.) Pomiędzy raw a githubusercontent
Lubię to:
rawgithubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js
Teraz, kiedy odwiedzisz ten link, otrzymasz link, który może być użyty do wywołania twojego javascript:
Oto ostatni link:
https://rawgit.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js
Podobnie, jeśli hostujesz plik css, musisz to zrobić, jak wspomniano powyżej. Jest to najprostszy sposób, aby uzyskać prosty link do wywołania zewnętrznego pliku css lub javascript hostowanego na github.
Mam nadzieję, że to jest pomocne.
Adres URL odwołania: http://101helper.blogspot.com/2015/11/store-blogger-codes-on-github-boost-blogger-speed.html
źródło
Odkryłem, że błąd został wyświetlony z powodu komentarzy na początku pliku. Możesz rozwiązać ten problem, po prostu tworząc własny plik bez komentarza i naciskając przycisk „git”, nie pokazuje żadnego błędu
Na dowód możesz wypróbować te dwa pliki z tym samym kodem łatwej paginacji:
bez komentarza
z komentarzem
źródło
Miałem ten sam problem co ty, zmieniłem
Mi to pasuje.
źródło
Najprostszy sposób:
<script type="text/plain" src="http://raw.githubusercontent.com/user/repo/branch/file.js"></script>
obsługiwany przez GitHub
i
bardzo
niezawodny.Z
text/plain
bez
text/plain
źródło
raw.github.com
nie jest naprawdę surowym dostępem do zasobu pliku, ale widokiem renderowanym przez Railsy. Dostępraw.github.com
jest znacznie trudniejszy niż potrzeba. Nie wiem, dlaczegoraw.github.com
został zaimplementowany jako widok Railsów. Zamiast naprawić ten problem z trasą, GitHub dodałX-Content-Type-Options: nosniff
nagłówek.Obejście:
user.github.io/repo
źródło
raw.github.com
do ładowania plików - a następnie github zdał sobie sprawę, że były one używane jako CDN, co powodowało o wiele za dużo ruchu. W rezultacie zmienili go na ten rodzaj renderowania zX-Content-Type-Options: nosniff
nagłówkiem, aby uniemożliwić użytkownikom korzystanie z ich usług w ten sposób.Alternatywnie, jeśli generujesz znaczniki po stronie serwera, możesz po prostu pobrać i wstrzyknąć. Na przykład w JSTL możesz to zrobić:
Z jakiegoś powodu nie pozwalają na hotlinkowanie, więc prawdopodobnie jest to zła forma, jeśli chcesz być dobrym obywatelem. Sugeruję buforowanie tego javascript i pobieranie go tylko okresowo, jeśli uważasz to za stosowne.
źródło
Przykład
oryginalny
cdn.jsdelivr.net
źródło