Uygulama / x-javascript ve metin / javascript içerik türleri arasındaki fark


245

Bu başlıklar arasındaki fark nedir?

Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript

Hangisi en iyisi ve neden?

Lütfen aynı olduklarını söyleme - aynı olsaydı üç tane olmazdı. Her ikisini de biliyorum - ama farkı bilmek istiyorum.


1
Bu fark aynı zamanda senaryolarınızın sıkıştırılmamasının klasik bir nedenidir. HttpCompression'da, sunmakta olduğunuz gerçek tür için bir girişiniz olduğundan emin olun ve IIS Express'in varsayılan olarak yalnızca application / x-javascript ve text / * öğesini sıkıştırdığını unutmayın.
rism

Not: "Javascript mime tiplerinin" tam listesini burada bulabilirsiniz: html.spec.whatwg.org/multipage/… . yani bu, yönerge belirtildiğinde tarayıcının bir scriptetiketin typeözelliğine izin vermesi gereken değerlerin listesidir nosniff. developer.mozilla.org/tr-TR/docs/Web/HTTP/Headers/…
JohnLBevan

Yanıtlar:


320

text/javascriptgeçersizdir ve standartlaştırılıncaya kadar bir geçiş dönemi için application/x-javascriptdeneyseldir (dolayısıyla x-ön ek) application/javascript.

Kullanmalısınız application/javascript. Bu RFC'de belgelenmiştir .

Bir tarayıcı söz konusu olduğunda, hiçbir fark yoktur (en azından HTTP üstbilgilerinde). Bu sadece bir değişiklikti, böylece text/*ve application/*MIME tipi gruplar mümkün olan yerlerde tutarlı bir anlama sahipti. ( text/*MIME türleri insan tarafından okunabilir içerik içindir, JavaScript doğrudan insanlara anlam iletmek için tasarlanmamıştır).

Kullanarak unutmayın application/javascriptde typebir komut dosyası öğesinin öznitelik bazı eski tarayıcılarda (bilinmeyen bir dilde olmak gibi) komut göz ardı edilmesine neden olacaktır. Ya kullanmaya devam ettext/javascriptOrada edin veya özelliği tamamen atlayın (HTML 5'te izin verilir).

Tarayıcılar evrensel olarak (bildiğim kadarıyla) ya HTTP içerik türündeki komut dosyalarının tamamen göz ardı edildiği ya da tanıyacak kadar modern olduğu için HTTP üstbilgilerinde bir sorun değildir application/javascript.


detaylı cevap için çok teşekkürler. bir sorun daha - tamamen (sadece HTML5?) atlayabileceğini söylediniz - ama sorum (daha sonra birisi tarafından düzenlenmişti) özellikle PHP'deki JS ile ilgili - tüm sunucular / tarayıcılarda PHP / JS kombinasyonu olarak çalışacak mı? tamamen atlayacaksam ??
Obmerk Kronen

8
Bir öğe üzerindeki type niteliği atlayabilirsiniz <script>. Content-TypeHTTP üstbilgisini hiçbir zaman atlayamazsınız (PHP'de belirtmezseniz PHP varsayılan olarak text/htmlçok yanlış olur).
Quentin

2
İnsan tarafından okunabilir mantığın ardından, CSS metin yerine uygulama altında sınıflandırılmamalıdır mı?
Fabrício Matté

2
@frnhr bu cevaba yapılan düzenlemeniz amaçlanan anlamı değiştirmiştir (bu text/javascripteski ve application/x-javascriptdeneysel olarak ifade edilmiştir). Daha da kötüsü, cevabın başlangıcını tutarsız bıraktı, bir blok text/javascriptaçık bir nedenden ötürü cevabın üstünde alakasız bir şekilde takıldı.
Mark Amery

1
SVN'de kesinlikle metin / javascript kullanın. SVN, metin / BAŞLATMAYAN hiçbir şeyi ikili olarak ele alır. Tüm SVN çalışma kopyanızı düzeltmek için aşağıdakileri içeren bir mime.cmd dosyası oluşturmanız gerekir: @echo off for /r . %%X in (*.js) do ( svn propset svn:mime-type text/javascript "%%X" ) yürütüldüğünde, deponuzdaki tüm JS dosyalarının mime türünü metin / javascript olarak değiştirir. Daha sonra yeni mime türü ile JS dosyalarını SVN'ye vermeniz gerekir.
Mark Eldridge

21

ile başlayan mime türleri x-standart değildir. Javascript durumunda bu modası geçmiş. İkinci kod snippet'ini ekleyin

<?Header('Content-Type: text/javascript');?>

gerektirir short_open_tagsetkin olması. bundan kaçınmalısınız.

<?php Header('Content-Type: text/javascript');?>

Ancak, javascript için tamamen doğru mime türü

application/javascript

http://www.iana.org/assignments/media-types/application/index.html


1
Eski cevap, ama bu en iyi uygulama olana kadar kısa açık etiketlerle başlamak iyi mi bilmiyorum (aslında PHP-
SOT'u

8

RFC 4329'a göre JavaScript için doğru MIME türü olmalıdır application/javascript. Howerver, eski IE sürümleri beklediklerinden beri bunu boğdu text/javascript.


7
Bildiğim kadarıyla IE, HTTP içerik türünün söylediği bir maymuna vermez; yalnızca HTML typeözelliğinin söylediği (ve HTML 5 taslaklarında bu özellik JavaScript için atlanabilir).
Quentin

@Quentin ahh ... bana sorun çıkartan şey buydu. Teşekkürler!
martin

3

Type = "application / javascript" kullanın

HTML5 durumunda, type özelliği geçersizdir, kaldırabilirsiniz. Not: w3.org'a göre varsayılan olarak "text / javascript" olarak ayarlandığından, kaldırmak yerine "application / javascript" eklemenizi öneririm.

http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
type özniteliği, komut dosyasının dilini veya verilerin biçimini verir. Özellik mevcutsa, değeri geçerli bir MIME türü olmalıdır. Charset parametresi belirtilmemelidir. Öznitelik yoksa kullanılan varsayılan "metin / javascript" tir.

"Text / javascript" kullanılmadığı için "application / javascript" kullanın :

RFC 4329: http://www.rfc-editor.org/rfc/rfc4329.txt

  1. Konuşlandırılmış Komut Dosyası Ortam Türleri ve Uyumluluk

    ECMAScript ve JavaScript ile yazılmış programları etiketlemek ve değiştirmek için geçici olarak çeşitli kayıt dışı medya türleri kullanılmıştır. Bunlar:

    + ------------------------------------------------- ---- + | metin / javascript | metin / yazım | | metin / javascript1.0 | metin / javascript1.1 | | metin / javascript1.2 | metin / javascript1.3 | | metin / javascript1.4 | metin / javascript1.5 | | metin / jscript | metin / yaşam yazısı | | metin / x-javascript | metin / x-ecmascript | | uygulama / x-javascript | uygulama / x-ecmascript | | uygulama / javascript | uygulama / ecmascript | + ------------------------------------------------- ---- +

Bu tür içerik için "metin" üst düzey türün kullanımının sorunlu olduğu bilinmektedir. Bu belge böylece metni / javascript'i ve text /
ecmascript'i tanımlar, ancak "eski" olarak işaretler.
Yukarıdaki bölümde listelendiği gibi deneysel ve kayıt dışı ortam türlerinin kullanılması önerilmez.
Medya türleri,

  * application/javascript
  * application/ecmascript

bu dokümanda da tanımlananlar, ortak kullanıma yöneliktir ve bunun yerine kullanılmalıdır.

Bu belge,
text / javascript, text / ecmascript ve application / javascript türleri için eşdeğer işleme gereksinimlerini tanımlar .
Ortam türü uygulaması / ecmascript kullanımı ve desteği
,
bu belgede tanımlanan diğer ortam türlerine göre çok daha az yaygındır . Bunu kendi yararına kullanarak, bu belge
daha fazla birlikte çalışabilirliği teşvik etmek için bu tür için daha katı işleme kurallarını tanımlar
.

x-javascript deneyseldir, kullanmayı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.