it-swarm.dev

Jakou hodnotu typu Content-Type mám poslat pro svůj soubor Sitemap XML?

Myslel jsem, že bych měl poslat "text/xml", ale pak jsem četl, že bych měl poslat "application/xml". Záleží na tom? Může někdo vysvětlit ten rozdíl?

119
Kyle

Rozdíl mezi text/xml a application/xml je výchozí kódování znaků, pokud je parametr charset vynechán:

Text/xml a application/xml se chovají odlišně, když parametr charset Není explicitně specifikován. Pokud je výchozí znaková sada (tj. US-ASCII) pro text/xml je z nějakého důvodu nepohodlná (např. Špatné webové servery ), Aplikace/xml poskytuje alternativu (viz „Volitelné parametry "registrace/registrace v oddílu 3.2).

Pro text/xml :

V souladu s [RFC2046], pokud je entita text/xml přijata s Parametr charset vynechán, procesory MIME a procesory XML MUSÍ používat výchozí hodnotu znakové sady "us-ascii" [ASCII] . V případech , Kde je entita XML MIME přenášena přes HTTP, je výchozí hodnota znaku Stále "us-ascii".

Pro application/xml :

Pokud je přijata entita application/xml, kde je parametr charset Vynechán, neposkytuje se žádná informace o znaku Znakem MIME Content-Type. Vyhovění XML Procesorům MUSÍ splňovat požadavky uvedené v oddílu 4.3.3 [XML] , Které přímo řeší tuto událost. Procesory MIME , Které nejsou procesory XML, by však neměly převzít výchozí znakovou sadu, pokud je parametr Z entity application/xml vynechán.

Pokud je parametr charset vynechán, je kódování znaků text/xml znakem US-ASCII, zatímco znak application/xml kódování znaků lze zadat v samotném dokumentu.

Nyní je pravidlem na internetu: „Buďte přísní s výstupem, ale s vstupem buďte tolerantní.“ To znamená, že při dodávání dat přes internet se ujistěte, že splňujete standardy. Ale stavět v některých mechanismů přehlédnout chyby nebo hádat při přijímání a tlumočení dat přes internet.

Takže ve vašem případě stačí vybrat jeden z těchto dvou typů (doporučuji application/xml) a ujistěte se, že jste správně zadali použité kódování znaků (doporučuji použít odpovídající výchozí kódování znaků, aby bylo přehrávání bezpečné, takže v případě application/xml používají UTF-8 nebo UTF-16).

150
Gumbo

Nejbezpečnější sázka na řádné zpracování dokumentu všemi webovými servery, servery proxy a klientskými prohlížeči je pravděpodobně následující:

  1. Použijte typ obsahu aplikace/xml
  2. Zahrnout kódování znaků v typu obsahu, pravděpodobně UTF-8
  3. Zahrnout odpovídající kódování znaků do atributu kódování samotného dokumentu XML.

V podmínkách RFC 3023 spec, který některé prohlížeče nedokážou správně realizovat, hlavní rozdíl v typech obsahu je v jak klienti mají k léčbě kódování charakteru, takto:\t

Pro aplikaci/xml, application/xml-dtd, application/xml-external-parsed-entity nebo některý z podtypů aplikací/xml, jako je application/atom + xml, application/rss + xml nebo application/rdf + xml kódování znaků je určeno v tomto pořadí:

  1. kódování zadané v parametru charset hlavičky HTTP typu Content-Type
  2. kódování uvedené v atributu kódování deklarace XML v dokumentu,
  3. utf-8.

Pro text/xml, text/xml-external-parsed-entity nebo subtyp, jako je text/foo + xml, je atribut kódování deklarace XML v dokumentu ignorován a kódování znaků je:

  1. kódování zadané v parametru charset hlavičky HTTP typu Content-Type nebo
  2. us-ascii.

Většina analyzátorů neimplementuje spec; ignorují typ kontextu HTTP a používají pouze kódování v dokumentu. S tolika špatně utvořenými dokumenty, které se tam brzy nedají změnit.

24
nas

oba jsou v pořádku.

text/xxx znamená, že v případě, že program nerozumí programu xxx, má smysl zobrazit soubor uživateli jako prostý text. application/xxx znamená, že je zbytečné ji zobrazovat.

Vezměte prosím na vědomí, že tyto typy obsahu byly původně definovány pro přílohu e-mailu, než byly později použity ve webovém světě.

9

text/xml je pro dokumenty, které by měly smysl pro člověka, pokud by byly prezentovány jako text bez dalšího zpracování, aplikace/xml je pro všechno ostatní

Každá entita XML je vhodná pro použití s ​​aplikací/xml media Bez úpravy. To však nevyužívá skutečnosti, že XML lze v mnoha případech považovat za prostý text. Uživatelé agentů MIME (A agenti webového uživatele), kteří nemají výslovnou podporu pro aplikaci /Xml, ji budou považovat za aplikační/oktetový proud, například v případě . uložit do souboru.

Chcete-li označit, že entita XML by měla být považována za prostý text ve výchozím nastavení , Použijte typ média text/xml. To omezuje kódování Použité v entitě XML na ty, které jsou kompatibilní s požadavky Pro typy textových médií, jak je popsáno v [RFC-2045] a [RFC-2046] , např. UTF-8, ale ne UTF-16 (kromě HTTP).

- http://www.ietf.org/rfc/rfc2376.txt

6
Quentin

Další odpovědi zde řeší obecnou otázku, co je správné Content-Type pro odpověď XML a na závěr (jako u Jaký je rozdíl mezi textem/xml vs aplikací/xml pro odpověď na webovou službu ), které jsou text/xml a application/xml přípustné. Žádný však neřeší, zda existují nějaká pravidla specifická pro sitemaps.

Odpověď: nejsou. Sitemap spec je https://www.sitemaps.org , a pomocí Google site: vyhledávání můžete potvrdit, že neobsahuje slova nebo fráze mime, mimetype, content -type, application/xml, nebo text/xml kdekoli. Jinými slovy, to je naprosto tiché na téma co Content-Type by měl být používán pro poskytování sitemapů.

Při absenci jakéhokoli komentáře v souboru Sitemap, který se přímo zabývá touto otázkou, můžeme bezpečně předpokládat, že platí stejná pravidla jako při výběru Content-Type jakéhokoli jiného XML dokumentu - tj. Že může být buď text/xml nebo application/xml.

0
Mark Amery