ne mogu postaviti zaglavlja nakon što su poslana

Cant Set Headers After They Are Sent



Danas, kada sam naučio lijepo statičko usmjeravanje express okvira, naišao sam na problem:
slika
Prikaz pogreške: nije moguće postaviti zaglavlja nakon što su poslana Ne može poslati zaglavlje jer je već jednom poslano
Prilikom obrade HTTP zahtjeva, poslužitelj će prvo iznijeti zaglavlje odgovora, a zatim će iznijeti sadržaj tijela, a jednom će zaglavlje odgovora iznijeti jednom (na primjer: izvršiti res.writeHead () ili res.write () Ili res.end ( )), kada pokušamo postaviti zaglavlje odgovora putem res.setHeader () ili res.writeHead () (neke metode poput res.redirect () pozvat će res.writeHead ()) Prijavi grešku.
Kada promijenim res.send () u res.end (), kôd se može uspješno pokrenuti

Koja je razlika između res.send () i res.end ()?

Ako se klijentu s poslužitelja ne vrate podaci, možete koristiti res.end
Međutim, ako postoje podaci na strani poslužitelja vraćeni klijentu, morate koristiti res.send umjesto res.end (prijavit će se pogreška)



Izvadak iz upotrebe res.send ():

res.send ([tijelo | status], [tijelo])



Odnosno, sadržaj se može poslati izravno, ili status prvog parametra i sadržaj drugog parametra.



Ako se sadržaj pošalje izravno, status će se automatski dovršiti

③Poslani sadržaj:
Primjer:
res.send (newBuffer (‘whoop’))
res.send ({neki: ‘json’})
res.send (‘neki html’)
res.send (404, 'Žao nam je, ne možemo to pronaći!')
res.send (500, {pogreška: ‘nešto je puklo’))
ponovno poslati (200)

[1] Prvo je slanje binarnog sadržaja. Kad je njegov parametar Buffer, Content-Type bit će postavljen na 'application / octet-stream', a to znači da je njegov sufiks datoteke (vrsta datoteke) Za neke vrste možete vidjeti:
http://www.w3school.com.cn/media/media_mimeref.asp
I ovo kaže wiki
· Aplikacija / oktetni tok (proizvoljni binarni podaci)
To će reći, ovo je proizvoljan binarni podatak. Kako ga protumačiti ovisi o stvarnoj situaciji (kao što je naziv sufiksa). Na primjer, to može biti img ili videozapis.



[2] Ako se pošalje niz, on će se protumačiti kao html datoteka
Drugim riječima, Content-Type je prema zadanim postavkama postavljen na 'text / html':
Na primjer, ako pošaljete post, a ja res.send ('aaa'), tada će web stranica skočiti na stranicu sa samo tekstom aaa

[3] Ako je parametar Array (niz) ili Ojbect (objekt), tada će se vratiti JSON