Chrome bu JavaScript dosyasını yürütmeyi reddetti


32

HTML sayfamın başında:

<script src="https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js"></script>

Sayfayı tarayıcıma yüklediğimde (Google Chrome v 27.0.1453.116) ve geliştirici araçlarını etkinleştirdiğimde şöyle diyor:

MIME türü ('text / plain') çalıştırılamadığından, ' https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js ' adresinden komut dosyasını çalıştırmayı reddetti. katı MIME tipi kontrolü etkindir.

Aslında, komut dosyası çalışmaz. Chrome neden bunun düz bir metin dosyası olduğunu düşünüyor? Açıkça bir .jsdosya uzantısına sahip.

HTML5 kullandığımdan bu typeözelliği kullandım, bu yüzden soruna neden olabileceğini düşündüm. Ben type="text/javascript"de <script>etikete ekledim ve aynı sonucu aldım. Denedim type="application/javascript"ve hala aynı hatayı aldım.

Sonra type="text/plain"sadece meraktan değiştirmeye çalıştım . Tarayıcı bir hata döndürmedi, fakat elbette JavaScript de çalışmadı.

Sonunda, dosya adındaki sürelerin tarayıcıyı atıyor olabileceğini düşündüm. Bu yüzden, HTML kodumda, tüm süreleri URL çıkış karakteriyle değiştirdim %2E:

<script src="https://raw.github.com/cloudhead/less%2Ejs/master/dist/less-1%2E3%2E3.js"></script>

Bu hala işe yaramadı. Gerçekten işe yarayan tek şey (yani tarayıcı bir hata vermez ve JS başarılı bir şekilde çalışır), dosyayı indirip yerel bir dizine yükleyip srcdeğeri yerel dosyaya değiştirmemdir. Kendi web sitemde yer kazanmaya çalıştığım için bunu yapmamayı tercih ederim.

Chrome'un bağlı dosyanın gerçekten bir JavaScript türü olduğunu fark etmesini nasıl sağlayabilirim?

Yanıtlar:


16

Sahip olduğunuz sorun sizin kontrolünüz dışında çünkü Github'ta bahsettiğiniz yolda hosting kurulumu nasıl yapılır, Uzantı tipi sadece web barındırma kuralını aşabileceği için dosyaları çalıştırma konusunda sadece faktör değildir. tarayıcı bir dosya oluşturur.

Ana bilgisayar bunu yapmak için ayarlanmışsa, .html dosyası olarak bir .zip dosyası oluşturabilirsiniz, firebug kullanarak ve başlık tepkisine bakarak kendiniz kontrol edebilirsiniz. bir JS dosyası, ancak başlık yanıtı farklı bir beklenen değer döndürür, ancak tarayıcılar başlık yanıtına saygı gösterir ve neye ihtiyaç duyulursa ...

Ham alt etki alanı üzerinde barındıran github Content-Type text/plain; charset=utf-8, MIME türü olarak geri dönüyor ; bu, JS olarak kullanılmayacağı anlamına gelir; ancak ham metin yerine, aşağıda, dosyayı oluşturmak için sunucunun geri dönmesi için gerekenlere bir örnek verilmiştir. github tarafından döndürülen kod.

JS MIME türünü destekleyen bir sunucu şöyle görünür:

Accept-Ranges   bytes
Connection  Keep-Alive
Content-Encoding    gzip
Content-Length  31097
Content-Type    application/javascript
Vary    Accept-Encoding
Request Headersview source
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Ve bu https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.jsbaşlık (RAW VIEW) olarak cevap veriyor.

Accept-Ranges   bytes
Connection  Keep-Alive
Content-Disposition inline
Content-Encoding    gzip
Content-Length  41354
Content-Transfer-Encoding   binary
Content-Type    text/plain; charset=utf-8

Er, ne? Peki düzeltme nedir?
pabrams

2
senin kontrolünde uygun bir ev sahibi kullanarak pabramlar düzeltme ya da kullanım ham maddedir
Simon Hayter

25

Aralık 2018 düzenleme

RawGit artık kötü amaçlı kullanım nedeniyle gün batımına girdiğinden, aşağıdaki hizmetlerden birini kullanmanızı tavsiye ediyorlar:


Orijinal yayın

Rawgithub.com , kullanıcıların Git'in "Raw" sürümlerini almalarını ve bunları <script>etiketlerde kullanılabilen bir URL'ye dönüştürmelerini sağlar . Kullanımı oldukça kolaydır, ilkini .ham URL'den kaldırmanız yeterlidir . Örneğin, bu:

https://raw.github.com/joelambert/CSS-Animation-Store/master/cssanimationstore.js

dönüşeceğini bu

https://rawgithub.com/joelambert/CSS-Animation-Store/master/cssanimationstore.js

ve sonra <script>uygun tipte bir etikete koyarsınız . Bu kadar basit!

Talep sayısını sınırlıyorlar çünkü üretim değil üretim amaçlıdır.

2014 düzenle

Reinderien’in dediği gibi, rawgithub şimdi sadece rawgit, yani yeni script link

https://rawgit.com/joelambert/CSS-Animation-Store/master/cssanimationstore.js

6
Rawgithub ana sayfasında, üretim siteleri için kullanmadığını söylüyor . Ayrıca resmi bir Github sitesi görünmüyor.
DisgruntledGoat

1
Asla yapmadım demedim ...
Zach Saucier

1
Not - Bu şimdi rawgit.com'a yönlendirir. Ve çalışıyor!
Reinderien

1
Bu site şimdi isteklere 403 veriyor ve başlıklar günbatımının başladığını söylüyor.
Michael,

@Michael Sad :( Neyse ki rawgit web sitesinde bazı alternatifler sundu, bu yüzden verdiğim cevaplarımı cevapladım.
Zach Saucier 19

6

Dosya uzantısı önemli değil, önemli olan İçerik Türü başlığı ve bu dosya bir text/plainiçerik türüyle (Github'un "işlenmemiş" görünümünün amacı olan) sunuluyor .

Dosyanın bir kopyasını yerel olarak sitenize indirmeli ve oradan eklemelisiniz. Github'dan çalışmış olsa bile, JS dosyasını eşzamansız olarak yüklemediğinizden, bu <script>etiketi sayfa başlığınıza koymak sitenizi Github'ın kullanılabilirliğine bağlı hale getirir.


8
"Gerçekten de dosyanın bir kopyasını sitenize yerel olarak indirmeli ve oradan eklemelisiniz", anahtar. GitHub’tan ev sahipliği yapılmadı.
Ahtapot

@Octopus, yerel bir kopyasını indirip saklamak için yapılandırıp daha sonra komut dosyasını programlı olarak işaret edebiliriz.
Sudip Bhandari


1

Bununla birlikte meselenin işaret ettiği gibi, raw.github.com tarafından sunulan neredeyse tüm içeriğin bir metin dosyası olarak gönderilmesi - bu şekilde içerik başka hiçbir uygulama veya sorun olmadan tarayıcınızda düz metin olarak oluşturulmaktadır. Aksi halde, bir .js dosyasını görüntülemeye çalışmanın tarayıcının size göstermekten çok onu çalıştırmaya çalışmasına neden olabileceği bir duruma gelirsiniz.

Bunun üzerine ne github ne de pages.github CDN olmaya çalışıyor. Gerçekten de yapmalısın:

  1. Dosyayı kendiniz barındırın, o kadar büyük değildir.
  2. Sitenizdeki bu ve diğer statik dosyalar için özel bir CDN kullanın.
  3. Çeşitli lessjs sürümleri bulunan cdnjs.com gibi bir şey kullanın .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.