Bilinmeyen dosya türü MIME?


Yanıtlar:


184

application/octet-streamBilinmeyen türler için kullanabilirsiniz .

RFC 2046 bölüm 4.5.1'de belirtilmektedir:

"Sekizli akış" alt türü, bir gövdenin rasgele ikili veriler içerdiğini belirtmek için kullanılır.


3
Aslında, RFC'ler için bilinmeyen verileri olan hiçbir tür bilgisi göndermemelisiniz. RFC-2046 yalnızca bilinen türleri tanımlar, ancak RFC-7231 bilinmeyen türleri nasıl kullanacağınızı gösterir.
Sampo Sarrala - codidact.org

@SampoSarrala RFC-7231'i biraz farklı okudum: "Bir İçerik Tipi başlık alanı yoksa, alıcı ya" uygulama / oktet-stream "ortam türünü kabul edebilir ([RFC2046], Bölüm 4.5.1) veya türünü belirlemek için verileri inceleyin. " İçerik İçerikli tahmin oyunları oynamayı istemeyen müşterilerimiz için ya NO İçerik Türü göndermemiz gerektiğine ya da uygulama / sekizli akışını varsayılan olarak göndermemizin güvenli olduğuna inanıyorum.
Jpnh

1
@Jpnh Evet, doğru. İçerik Türü başlığı, bilinmediği her zaman mevcut olmamalıdır. Ayrıca, istemciye " şimdi görüntülemek istemediğinizi, ancak devam edip bu baytları dosyaya kaydettiğinizi " söyleyen bir uygulama / octet-stream de gönderilebilir . Bu, web istemcilerinin kaydetme dosyası sunmasını sağlar. Seçenek 1 == Bu dosya hakkında hiçbir şey bilmiyorum. Seçenek 2 == Dosya içeriği mime kullanılarak tanımlanamaz veya sadece diske kaydedilmelidir. Uygulamada her iki seçenek de doğrudur. Karışıklığı önlemek için daha iyi ifadeler seçmeliydim.
Sampo Sarrala - codidact.org

4
"Rasgele ikili veriler" "bilinmiyor" değildir. Application / octet-stream kullanarak tarayıcıya içerik türünün bilindiğini, metin veya görüntü olmadığını, rastgele ikili verilerin olduğunu ve sonuç olarak dosyaya indirilmesi ve yürütülmesi gerektiğini söylersiniz. Yanlış olmanın yanı sıra, özellikle zar zor görünen modern indirme yöneticileri göz önüne alındığında bir güvenlik deliği. Doğru cevap, içerik türü üstbilgisi değildir. Ne tür bir dosya olduğunu bilmiyorsanız, tarayıcı bunu tahmin edebilir, özellikle de kullanım bağlamını bildiğinde (resim, belge, komut dosyası, ...)
FF_Dev

@FF_Dev Bunun saçmalık olduğuna eminim. "Rasgele ikili veriler", "yürütülebilir" anlamına gelmez; bir tarayıcının (veya indirme yöneticisinin) bir application/octet-streamdosyanın yürütülebilir olduğunu varsayması için hiçbir neden yoktur . Bir tarayıcı bile Ve edilir bilerek bir çalıştırılabilir dosya indirme, kullanıcı için sormadan "muhtemelen yürütme" değildir; sadece çalıştırılabilir bir dosya indirmek, şu anda çalıştırılmasını istediğim anlamına gelmez. application/octet-streamİndirme sırasında dosyaları otomatik olarak çalıştırabilecek bir tarayıcı varsa , bize davranışın hangisini ve nasıl yeniden oluşturulacağını söyleyin. Şu anda sana inanmıyorum.
Mark Amery

38

RFC kaynakları:

Soru açıkça HTTP İçerik Türü ile ilgili olduğu için RFC-7231'i (HTTP / 1.1 Anlambilim ve İçerik) RFC-2046 (Medya Türleri) yerine referans olarak kullanmalıyız.

Ayrıca RFC-2046 bilinmeyen türleri açıkça tanımlamaz, ancak RFC-7231'i açıkça tanımlar.

Kısa cevap:

Bilinmeyen veriler için MIME türü göndermeyin.
Daha açık olmak gerekirse: İçerik Türü başlığını hiç kullanmayın.

Referanslar:

RFC-7231
Köprü Metni Aktarım Protokolü (HTTP / 1.1): Anlambilim ve İçerik
3.1.1.5. İçerik türü

Yük gövdesi içeren bir mesaj üreten bir gönderici , ekteki sunumun amaçlanan ortam türü gönderen tarafından bilinmiyorsa
, bu mesajda bir İçerik Tipi başlık alanı oluşturmalıdır .

Kesin olarak bilmiyorsanız, bu bölüm açık bir şekilde dışarıda bırakmanızı söyler. Ayrıca, alıcının türün application / octet-stream olduğunu varsayabileceğini söyler, ama bir şey de başka bir şey olabilir.

O zaman farklı olan ne?

RFC-2046
4.5.1. Octet-Stream Alt Türü

Bir
"application / octet-stream" varlığı alan bir uygulama için önerilen eylem , verileri
herhangi bir Content-Transfer-Encoding geri alındığında bir dosyaya koymayı veya belki de
kullanıcı tarafından belirtilen bir girdi olarak kullanmayı teklif etmektir. süreci.

Ve yukarıda belirtildiği gibi:

RFC-7231
3.1.1.5. İçerik türü

Bir İçerik Türü başlık alanı yoksa, alıcı "media / octet-stream" ortam türünü alabilir
([RFC2046], Bölüm 4.5.1) veya türünü belirlemek için verileri inceleyebilir.

Sonuç:

Eğer "application / octet-stream" olarak tanımlarsanız, bunun "application / octet-stream" olduğunu bildiğinizi söylersiniz.

Eğer onu tanımlamazsanız, bunun ne olduğunu bilmediğinizi ve alıcı ve alıcıya karar vermenin, ördek gibi yürüdüğünü kontrol edebileceğini söylüyorsunuz ...


1
Bu cevap hakikatte tek olduğu için oylamayı hak ediyor. Buna ek olarak, varsayılan olarak "application / octet-stream" kullanarak tarayıcı görünmez.
FF_Dev

1
Bu HTTP için doğrudur, ancak soru HTTP ile değil genel olarak MIME ile ilgilidir. Örneğin e-postada kurallar tamamen farklıdır. Ayrıca, önerilen yinelenen stackoverflow.com/questions/12539058/…
üçlü

Aynı nedenden dolayı bir artış verdim, ancak FF_Dev'i kabul ediyorum. Amaç "application / octet-stream" olmak ve bir indirme işlemini tetiklemeden "uygulama / bilinmeyen" e ihtiyaç vardır. "Content-Disposition" ayarlanmamışsa tarayıcılar dosyayı indirmeye çalışmazsa iyi olur, ancak dosya adlarını kullanılacak şekilde ayarlamadan dosyaları rasgele indiren çok fazla web sitesi vardır. Özellikle bankalar.
justdan23

14

Tercih ederim application/unknown, ama sonuç kesinlikle aynı olacakapplication/octet-stream


17
Application / octet-stream yerine application / unknown kullanımına izin veren bir standart var mı?
Hendrik Brummermann

3
Teşekkürler! uygulama / bilinmeyen harika çalışıyor, octet-stream örnek png dosyamdaki kromda bir hata veriyor!
fnkr

10
Neden bir .png dosyası application/octet-streamveya olarak sunuluyor application/unknown? İcat etmelerinin bir nedeni var image/png.
Aidiakapi

10
@ jenson-button-event Tekerleği yeniden icat etmekle hiçbir ilgisi yok. MIME türü niyetinizi belirtir. Gönderdiğiniz şeyin bir png resmi olması gerektiğini biliyorsanız, bu bilgileri iletin. Baytlar yanlışlıkla bir jpeg'i temsil ediyorsa, uygulamanız geçerli bir png olmadığı ve başka bir yerde bir hatanız olduğu konusunda sizi uyarabilir. Ayrıca, tüm uygulamalar tarayıcı kadar sağlam ve hataya dayanıklı değildir. Programcının hatalarını düzeltmek için tasarlandılar, ancak bu tek amacının yakınında değil. Tarayıcı, MIME türlerini kullanan tek uygulama değildir.
Aidiakapi

2
Referansınız nedir? bilinmeyen tür, dosyanın içeriği veya durumu ile ilgili herhangi bir bilgiye katkıda bulunmuyor veya ikili veya metin tabanlı olsa bile, üretim kodu için çok belirsiz, küçük bir proje için uygun olabilir, çünkü bir dosya mime türü yoksa işletim sisteminde, aslında indirilebilir bir ikili dosyadır ve bilinmeyen tür, Windows OS'de, bir eylem atayabileceğiniz bilinen bir tanıtıcıdır (örneğin, bilinmeyen dosyaları not defteri ile açma). Kötü uygulama size kombine bilinmeyen tip kullanabilirsiniz, ancak bu /: Herhangi yürütme atlamak
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.