ฉันควรส่งค่า Content-Type ใดสำหรับแผนผังไซต์ XML


128

ฉันคิดว่าฉันควรส่ง "text / xml" แต่ฉันอ่านแล้วว่าควรส่ง "application / xml" มันสำคัญหรือไม่? ใครสามารถอธิบายความแตกต่าง?

คำตอบ:


160

ความแตกต่างระหว่างtext / xmlและapplication / xmlคือการเข้ารหัสอักขระเริ่มต้นหากไม่ใส่พารามิเตอร์charset :

ข้อความ / xml และ application / xml ทำงานแตกต่างกันเมื่อไม่ได้ระบุพารามิเตอร์ charset ไว้อย่างชัดเจน หากชุดอักขระเริ่มต้น (เช่น US-ASCII) สำหรับข้อความ / xml ไม่สะดวกด้วยเหตุผลบางประการ (เช่นเว็บเซิร์ฟเวอร์ที่ไม่ดี) แอปพลิเคชัน / xml จะมีทางเลือกให้ (ดู "พารามิเตอร์เสริม" ของการลงทะเบียน application / xml ในส่วน 3.2)

สำหรับข้อความ / xml :

สอดคล้องกับ [RFC2046] หากได้รับเอนทิตี text / xml โดยเว้นพารามิเตอร์ charset ไว้ตัวประมวลผล MIME และตัวประมวลผล XML ต้องใช้ค่าชุดอักขระเริ่มต้นของ "us-ascii" [ASCII] ในกรณีที่ส่งเอนทิตี XML MIME ผ่าน HTTP ค่าชุดอักขระเริ่มต้นยังคงเป็น "us-ascii"

สำหรับแอปพลิเคชัน / xml :

หากได้รับเอนทิตี application / xml โดยที่พารามิเตอร์ charset ถูกละไว้จะไม่มีการให้ข้อมูลเกี่ยวกับชุดอักขระโดยส่วนหัว MIME Content-Type การปฏิบัติตามตัวประมวลผล XML ต้องเป็นไปตามข้อกำหนดในส่วน 4.3.3 ของ [XML] ที่จัดการกับเหตุการณ์ฉุกเฉินนี้โดยตรง อย่างไรก็ตามตัวประมวลผล MIME ที่ไม่ใช่ตัวประมวลผล XML ไม่ควรถือว่าเป็นชุดอักขระเริ่มต้นหากพารามิเตอร์ charset ถูกละไว้จากเอนทิตีแอ็พพลิเคชัน / xml

ดังนั้นหากไม่ใส่พารามิเตอร์charsetการเข้ารหัสอักขระของtext / xmlจะเป็น US-ASCII ในขณะที่ใช้ application / xmlการเข้ารหัสอักขระสามารถระบุได้ในเอกสาร

ตอนนี้หลักการง่ายๆบนอินเทอร์เน็ตคือ:“ เข้มงวดกับผลลัพธ์ แต่อดทนต่ออินพุต” นั่นหมายถึงตรวจสอบให้แน่ใจว่าเป็นไปตามมาตรฐานให้มากที่สุดเมื่อส่งข้อมูลผ่านอินเทอร์เน็ต แต่สร้างกลไกบางอย่างเพื่อมองข้ามความผิดพลาดหรือคาดเดาเมื่อรับและตีความข้อมูลผ่านอินเทอร์เน็ต

ดังนั้นในกรณีของคุณเพียงแค่เลือกหนึ่งของทั้งสองประเภท (ผมขอแนะนำแอพลิเคชัน / XML ) และตรวจสอบเพื่อระบุตัวอักษรที่ใช้การเข้ารหัสอย่างถูกต้อง (ผมแนะนำให้ใช้การเข้ารหัสตัวอักษรเริ่มต้นที่เกี่ยวข้องในการเล่นที่ปลอดภัยดังนั้นในกรณีของแอพลิเคชัน / XMLใช้ UTF-8 หรือ UTF-16)


24

ตามหลักทั่วไปการเดิมพันที่ปลอดภัยที่สุดในการทำให้เอกสารของคุณได้รับการปฏิบัติอย่างเหมาะสมโดยเว็บเซิร์ฟเวอร์พร็อกซีและเบราว์เซอร์ไคลเอนต์ทั้งหมดอาจเป็นดังต่อไปนี้:

  1. ใช้ประเภทเนื้อหา application / xml
  2. รวมการเข้ารหัสอักขระในประเภทเนื้อหาซึ่งอาจเป็น UTF-8
  3. รวมการเข้ารหัสอักขระที่ตรงกันในแอตทริบิวต์การเข้ารหัสของเอกสาร XML เอง

ในแง่ของข้อกำหนดRFC 3023ซึ่งเบราว์เซอร์บางตัวไม่สามารถใช้งานได้อย่างถูกต้องความแตกต่างที่สำคัญในประเภทเนื้อหาคือวิธีที่ไคลเอ็นต์ควรปฏิบัติต่อการเข้ารหัสอักขระดังต่อไปนี้:

สำหรับ application / xml, application / xml-dtd, application / xml-external-parsed-entity หรือหนึ่งในประเภทย่อยของ application / xml เช่น application / atom + xml, application / rss + xml หรือ application / rdf + xml การเข้ารหัสอักขระจะถูกกำหนดตามลำดับนี้:

  1. การเข้ารหัสที่กำหนดในพารามิเตอร์ charset ของส่วนหัว HTTP ชนิดเนื้อหา
  2. การเข้ารหัสที่ระบุในแอตทริบิวต์การเข้ารหัสของการประกาศ XML ภายในเอกสาร
  3. UTF-8

สำหรับ text / xml, text / xml-external-parsed-entity หรือประเภทย่อยเช่น text / foo + xml แอตทริบิวต์การเข้ารหัสของการประกาศ XML ภายในเอกสารจะถูกละเว้นและการเข้ารหัสอักขระคือ:

  1. การเข้ารหัสที่กำหนดในพารามิเตอร์ charset ของส่วนหัว HTTP ชนิดเนื้อหาหรือ
  2. ASCII สหรัฐอเมริกา

โปรแกรมแยกวิเคราะห์ส่วนใหญ่ไม่ได้ใช้ข้อมูลจำเพาะ พวกเขาไม่สนใจ HTTP Context-Type และเพียงแค่ใช้การเข้ารหัสในเอกสาร ด้วยเอกสารที่ผิดรูปแบบมากมายจึงไม่น่าจะเปลี่ยนแปลงได้ในเร็ว ๆ นี้


9

สบายดีทั้งคู่

text / xxx หมายความว่าในกรณีที่โปรแกรมไม่เข้าใจ xxx ควรแสดงไฟล์ต่อผู้ใช้เป็นข้อความธรรมดา application / xxx หมายความว่ามันไม่มีจุดหมายที่จะแสดง

โปรดทราบว่าเดิมทีประเภทเนื้อหาเหล่านี้ถูกกำหนดไว้สำหรับไฟล์แนบ E-Mail ก่อนที่จะนำไปใช้ในโลกเว็บ


6

ข้อความ / xml เป็นเอกสารที่มีความหมายต่อมนุษย์หากนำเสนอเป็นข้อความโดยไม่ต้องประมวลผลเพิ่มเติมแอปพลิเคชัน / xml มีไว้สำหรับทุกอย่าง

เอนทิตี XML ทุกตัวเหมาะสำหรับใช้กับชนิดสื่อแอปพลิเคชัน / xml โดยไม่ต้องแก้ไข แต่สิ่งนี้ไม่ได้ใช้ประโยชน์จากข้อเท็จจริงที่ว่า XML สามารถถือเป็นข้อความธรรมดาได้ในหลาย ๆ กรณี ตัวแทนผู้ใช้ MIME (และตัวแทนผู้ใช้เว็บ) ที่ไม่มีการสนับสนุนอย่างชัดเจนสำหรับแอ็พพลิเคชัน / xml จะถือว่าเป็นแอ็พพลิเคชัน / อ็อกเต็ตสตรีมเช่นเสนอให้บันทึกลงในไฟล์

ในการระบุว่าเอนทิตี XML ควรถือเป็นข้อความธรรมดาตามค่าเริ่มต้นให้ใช้ชนิดสื่อ text / xml สิ่งนี้ จำกัด การเข้ารหัสที่ใช้ในเอนทิตี XML เฉพาะการเข้ารหัสที่เข้ากันได้กับข้อกำหนดสำหรับประเภทสื่อข้อความตามที่อธิบายไว้ใน [RFC-2045] และ [RFC-2046] เช่น UTF-8 แต่ไม่ใช่ UTF-16 (ยกเว้น HTTP)

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


ยังคงเป็นตลกที่ที่ต้องการประเภท HTML MIME เป็นtext/htmlและแนะนำประเภท XHTML MIME application/xhtml+xmlคือ
zneak

1
ไม่จริง text/htmlมีมานานมากแล้วและมันก็สายไปหน่อยที่จะเปลี่ยนมัน
Quentin

1

คำตอบอื่น ๆ ในที่นี้จะกล่าวถึงคำถามทั่วไปว่าสิ่งที่เหมาะสมContent-Typeสำหรับการตอบกลับ XML คืออะไรและสรุป (เช่นเดียวกับความแตกต่างระหว่างข้อความ / xml กับแอปพลิเคชัน / xml สำหรับการตอบสนองของเว็บเซอร์ ) ซึ่งทั้งสองtext/xmlและapplication/xmlได้รับอนุญาต อย่างไรก็ตามไม่มีการระบุว่ามีกฎเฉพาะสำหรับแผนผังเว็บไซต์หรือไม่

คำตอบ: ไม่มี ข้อกำหนดแผนผังเว็บไซต์คือhttps://www.sitemaps.orgและเมื่อใช้site:การค้นหาโดย Google คุณสามารถยืนยันได้ว่าไม่มีคำหรือวลีmime , mimetype , content-type , application / xmlหรือtext / xmlที่ใดก็ได้ กล่าวอีกนัยหนึ่งก็คือหัวข้อที่Content-Typeควรใช้ในการให้บริการแผนผังไซต์นั้นเงียบอย่างสิ้นเชิง

ในกรณีที่ไม่มีความเห็นใด ๆ ในสเป็คแผนผังไซต์โดยตรงที่อยู่คำถามนี้อย่างปลอดภัยเราสามารถสรุปได้ว่าใช้กฎเดียวกันกับเมื่อเลือกContent-Typeของเอกสาร XML อื่น ๆ - คือว่ามันอาจจะเป็นอย่างใดอย่างหนึ่งหรือtext/xmlapplication/xml

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.