Fiecare resursă utilizată pe internet are un tip media, cunoscut și sub numele de tip MIME, care înseamnă Multipurpose Internet Mail Extension. Aceste informații sunt necesare pentru tranzacțiile dintre server și client.

Browserul trebuie să cunoască tipul de resurse trimise către acesta, astfel încât să poată să le gestioneze corect.

Același lucru este valabil și pentru server. Trebuie să cunoască tipul de resurse care i-au fost trimise pentru analiză și procesare precise.

Unde este declarat tipul de conținut?

Tipul media al oricărei resurse este declarat în Content-Type proprietatea antetului cererii (pe client, atunci când faceți o cerere către server) sau în antetul de răspuns (pe server, când trimiteți un răspuns).

ad-banner

Fără a declara în mod explicit tipul de conținut al unei resurse, clientul poate încerca să detecteze automat tipul, dar rezultatul poate să nu fie corect. Acesta este motivul pentru care este important să o declarați în mod explicit.

Tipuri media

Tipurile de media există sub diferite forme. Acestea sunt clasificate în diferite grupuri:

  • cerere
  • audio
  • font
  • exemplu
  • imagine
  • mesaj
  • model
  • multipart
  • text
  • și video

Aceste categorii au și tipurile lor. De exemplu, application/json este un tip sub application și text/html este un tip sub text.

Puteți găsi o listă completă a tipurilor de media în IANA (un corp care coordonează unele dintre elementele cheie de pe internet) tipuri de media.

Toate aceste tipuri acoperă diferite tipuri de date, cum ar fi text, audio, imagini, HTML și multe altele care sunt utilizate pe internet.

Browserul trebuie să cunoască tipul media al unei resurse

După cum am menționat mai sus, browserul trebuie să știe ce tip de conținut primește. Iată un exemplu pentru a ilustra acest lucru.

Următorul cod este un server Node care servește un fișier 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..");

Nu vă faceți griji cu privire la specificul codului. Tot ce te preocupă este index.htm fișierul pe care îl servim și că Content-Type este text/css.

Iată conținutul index.html:

<h1>Homepage</h1>

Desigur, un document HTML este diferit de un fișier CSS. Iată rezultatul localhost:5000 la pornirea serverului:

Captură de ecran-2020-12-08-at-10.12.32

De asemenea, puteți confirma răspunsul obținut verificând anteturile din fila de rețea a DevTools.

Iată rezultatul unui browser Chrome:

Captură de ecran-2020-12-08-at-10.13.34

Browserul a primit conținutul ca un tip CSS, prin urmare, a încercat să îl trateze ca CSS.

De asemenea, rețineți că cunoașterea deplină a tipului de conținut obținut de browser reduce, de asemenea, vulnerabilitățile de securitate, deoarece browserul cunoaște standardele de securitate pentru a pune în aplicare datele respective.

Acum că înțelegeți conceptul tipurilor MIME și importanța lor, să mergem la JSON.

Tipul de conținut corect pentru JSON

JSON trebuie interpretat corect de browser pentru a fi utilizat în mod corespunzător. text/plain a fost de obicei folosit pentru JSON, dar conform IANA, tipul oficial MIME pentru JSON este application/json.

Aceasta înseamnă că atunci când trimiteți JSON la server sau primiți JSON de la server, trebuie să declarați întotdeauna Content-Type a antetului ca application/json deoarece acesta este standardul pe care clientul și serverul îl înțeleg.

Concluzie

După cum sa menționat mai sus, serverul (la fel ca browserul) trebuie să cunoască tipul de date trimise acestuia, să zicem, într-o cerere POST. Acesta este motivul forms cu fișiere conțin de obicei enctype atribut cu o valoare de multipart/form-data.

Fără codificarea cererii în acest fel, solicitarea POST nu va funcționa. De asemenea, odată ce serverul cunoaște tipul de date pe care le-a obținut, atunci știe cum să analizeze datele codificate.

În acest articol, am analizat ce sunt tipurile MIME și scopul lor. De asemenea, ne-am uitat la tipul de conținut oficial pentru JSON. Sper că acum știți de ce este important să declarați tipurile de resurse atunci când sunt utilizate pe internet.