Node伺服器處理GET、POST請求
阿新 • • 發佈:2018-11-13
GET資料儲存在"req.url"裡面;而POST資料儲存在body裡面、比較大,因此會將資料分段進行傳輸,服務端監聽data事件來接收每一段資料,同時服務端監聽end事件來得知資料傳輸是否結束。例如:
const http=require('http'); const url=require('url'); const querystring=require('querystring'); let server=http.createServer((req, res)=>{ //GET let {pathname, query}=url.parse(req.url, true); //POST let str=''; req.on('data', data=>{ str+=data; }); req.on('end', ()=>{ let post=querystring.parse(str); console.log(pathname, query, post); }); }); server.listen(1337);
GET 與POST請求的區別
- GET產生一個TCP資料包;POST產生兩個TCP資料包。(對於GET方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);而對於POST,瀏覽器先發送header,伺服器響應100 continue,瀏覽器再發送data,伺服器響應200 ok(返回資料)。)
- GET在瀏覽器回退時是無害的,而POST會再次提交請求。
- GET產生的URL地址可以被Bookmark,而POST不可以。
- GET請求會被瀏覽器主動cache,而POST不會,除非手動設定。
- GET請求只能進行url編碼,而POST支援多種編碼方式。
- GET請求引數會被完整保留在瀏覽器歷史記錄裡,而POST中的引數不會被保留。
- GET請求在URL中傳送的引數是有長度限制的,而POST麼有。
- 對引數的資料型別,GET只接受ASCII字元,而POST沒有限制。
- GET比POST更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感資訊。
- GET引數通過URL傳遞,POST放在Request body中。