Computer >> คอมพิวเตอร์ >  >> ระบบเครือข่าย >> อินเทอร์เน็ต

ประเภทเนื้อหาที่ถูกต้องสำหรับ JSON คืออะไร ขอคำอธิบายประเภท Mime ส่วนหัว

ทรัพยากรทุกอย่างที่ใช้บนอินเทอร์เน็ตมีประเภทสื่อหรือที่เรียกว่าประเภท MIME ซึ่งย่อมาจาก Multipurpose Internet Mail Extension ข้อมูลนี้จำเป็นสำหรับการทำธุรกรรมระหว่างเซิร์ฟเวอร์และไคลเอนต์

เบราว์เซอร์จำเป็นต้องทราบประเภทสื่อของทรัพยากรที่ส่งไปเพื่อให้สามารถจัดการได้อย่างถูกต้อง

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

ประเภทเนื้อหาประกาศที่ไหน

ประเภทสื่อของทรัพยากรใด ๆ ถูกประกาศใน Content-Type คุณสมบัติของส่วนหัวคำขอ (บนไคลเอนต์ เมื่อส่งคำขอไปยังเซิร์ฟเวอร์) หรือในส่วนหัวการตอบกลับ (บนเซิร์ฟเวอร์ เมื่อส่งการตอบกลับ)

หากไม่มีการประกาศประเภทเนื้อหาของทรัพยากรอย่างชัดเจน ไคลเอ็นต์อาจพยายามตรวจหาประเภทโดยอัตโนมัติ แต่ผลลัพธ์อาจไม่ถูกต้อง ด้วยเหตุนี้จึงเป็นสิ่งสำคัญที่จะต้องประกาศอย่างชัดเจน

ประเภทสื่อ

ประเภทสื่อมีอยู่ในรูปแบบต่างๆ แบ่งออกเป็นกลุ่มต่างๆ:

  • แอพพลิเคชั่น
  • เสียง
  • แบบอักษร
  • ตัวอย่าง
  • ภาพ
  • ข้อความ
  • รุ่น
  • หลายส่วน
  • ข้อความ
  • และวิดีโอ

หมวดหมู่เหล่านี้ยังมีประเภทของพวกเขา ตัวอย่างเช่น application/json เป็นประเภทภายใต้ application และ text/html เป็นประเภทภายใต้ text .

คุณสามารถค้นหารายการประเภทสื่อทั้งหมดได้ในประเภทสื่อ IANA (เนื้อหาที่ประสานองค์ประกอบสำคัญบางอย่างบนอินเทอร์เน็ต)

ทุกประเภทเหล่านี้ครอบคลุมประเภทข้อมูลต่างๆ เช่น ข้อความ เสียง รูปภาพ HTML และอื่นๆ อีกมากมายที่ใช้บนอินเทอร์เน็ต

เบราว์เซอร์จำเป็นต้องทราบประเภทสื่อของทรัพยากร

ดังที่ได้กล่าวไว้ข้างต้น เบราว์เซอร์จำเป็นต้องรู้ว่าได้รับเนื้อหาประเภทใด นี่คือตัวอย่างที่แสดงให้เห็นว่า

รหัสต่อไปนี้เป็นเซิร์ฟเวอร์โหนดที่ให้บริการไฟล์ HTML:

const http = require("http");
const fs = require("fs");
const path = require("path");

const server = http.createServer(function (req, res) {
	const filePath = path.join(__dirname, "index.html");
	var stat = fs.statSync(filePath);

	res.writeHead(200, {
		"Content-Type": "text/css",
		"Content-Length": stat.size,
	});

	const readStream = fs.createReadStream(filePath);
	readStream.pipe(res);
});

server.listen(5000);

console.log("Node.js web server at port 5000 is running..");

ไม่ต้องกังวลเกี่ยวกับลักษณะเฉพาะของรหัส สิ่งที่คุณกังวลคือ index.htm ไฟล์ที่เราให้บริการและ Content-Type คือ text/css .

นี่คือเนื้อหาของ index.html :

<h1>Homepage</h1>

แน่นอน เอกสาร HTML ต่างจากไฟล์ CSS นี่คือผลลัพธ์ใน localhost:5000 เมื่อเซิร์ฟเวอร์เริ่มทำงาน:

ประเภทเนื้อหาที่ถูกต้องสำหรับ JSON คืออะไร ขอคำอธิบายประเภท Mime ส่วนหัว

คุณยังยืนยันคำตอบที่ได้รับได้โดยตรวจสอบส่วนหัวในแท็บเครือข่ายของ DevTools

นี่คือผลลัพธ์ในเบราว์เซอร์ Chrome:

ประเภทเนื้อหาที่ถูกต้องสำหรับ JSON คืออะไร ขอคำอธิบายประเภท Mime ส่วนหัว

เบราว์เซอร์ได้รับเนื้อหาเป็นประเภท CSS ดังนั้นจึงพยายามถือว่าเป็น CSS

นอกจากนี้ โปรดทราบว่าความรู้อย่างครบถ้วนเกี่ยวกับประเภทของเนื้อหาที่ได้รับจากเบราว์เซอร์ยังช่วยลดช่องโหว่ด้านความปลอดภัย เนื่องจากเบราว์เซอร์รู้มาตรฐานความปลอดภัยสำหรับข้อมูลนั้น

เมื่อคุณเข้าใจแนวคิดของประเภท MIME และความสำคัญแล้ว ไปที่ JSON กัน

ประเภทเนื้อหาที่ถูกต้องสำหรับ JSON

เบราว์เซอร์ต้องตีความ JSON อย่างถูกต้องจึงจะใช้งานได้อย่างเหมาะสม text/plain โดยทั่วไปใช้สำหรับ JSON แต่ตาม IANA ประเภท MIME อย่างเป็นทางการสำหรับ JSON คือ application/json .

ซึ่งหมายความว่าเมื่อคุณส่ง JSON ไปยังเซิร์ฟเวอร์หรือรับ JSON จากเซิร์ฟเวอร์ คุณควรประกาศ Content-Type เสมอ ของส่วนหัวเป็น application/json เนื่องจากเป็นมาตรฐานที่ลูกค้าและเซิร์ฟเวอร์เข้าใจ

บทสรุป

ตามที่ระบุไว้ข้างต้น เซิร์ฟเวอร์ (เช่นเดียวกับเบราว์เซอร์) จำเป็นต้องทราบประเภทของข้อมูลที่ส่งไปยังเซิร์ฟเวอร์ เช่น ในคำขอ POST นั่นเป็นเหตุผล forms โดยไฟล์มักจะมี enctype แอตทริบิวต์ที่มีค่า multipart/form-data .

หากไม่มีการเข้ารหัสคำขอด้วยวิธีนี้ คำขอ POST จะไม่ทำงาน นอกจากนี้ เมื่อเซิร์ฟเวอร์ทราบประเภทข้อมูลที่ได้รับ เซิร์ฟเวอร์จะทราบวิธีแยกวิเคราะห์ข้อมูลที่เข้ารหัส

ในบทความนี้ เรามาดูกันว่า MIME คืออะไรและมีวัตถุประสงค์อะไร นอกจากนี้เรายังดูประเภทเนื้อหาอย่างเป็นทางการสำหรับ JSON ฉันหวังว่าคุณจะรู้ว่าเหตุใดการประกาศประเภททรัพยากรเมื่อใช้บนอินเทอร์เน็ตจึงสำคัญ