node——簡單的服務器啟動+亂碼問題解決,響應報文頭


這個是一個比較簡單的代碼

// 1。加載hrrp模塊

var http=require('http');

// 2.創建一個http服務對象
var server=http.createServer();

// 3.監聽用戶請求的事件(request) 
server.on('request',function(request,response){
    response.write('Hello World');//要響應
    // 對於每一個請求服務器必須結束響應,否則客戶端(瀏覽器)會一直等待服務器響應
    response.end();
 
});

// 4.啟動服務
server.listen(8080,function(){
    console.log('服務器啟動,請訪問:http://localhost:8080');
});

在第三步中:

request里面包含了用戶請求中所有的內容,通過request可以獲取用戶提交過來的所有數據
response用來向用戶響應所有數據,當服務器要想客戶端響應數據的時候必須使用response對象
有了request對象和response對象,就可以獲取用戶提交的數據,也可以向用戶響應數據了

這四步就是基本的服務器啟動

這個時候瀏覽器會監聽8080端口,輸入http://localhost:8080,就可以看到響應Hello World

這里還有一個問題,如果我們訪問http://localhost:8080/xx,它的顯示如下:

這是因為在第三步寫了response.write('Hello World');不論訪問的什么,服務器響應的都會是Hello World,所以想要有不同響應,需要自己寫代碼去判斷。

這個時候我們還可以改一下,加入一點中文

response.write('Hello World!!你好世界');

問題就來了,出現了亂碼,這是因為編譯器默認編碼為UTF-8,而瀏覽器卻不這么認為。所以我們解決亂碼的思路為:服務器通過設置http響應報文頭。告訴瀏覽器使用相應的編碼來解析網頁,避免出現亂碼的情況

response.setHeader('Content-Type','text/ plain;charset=utf-8');
response.write('Hello World!!你好世界');

我們在代碼里加入請求頭后,瀏覽器可以正常識別中文了

這時候再變一下

response.setHeader('Content-Type','text/plain;charset=utf-8');
response.write('<h1>Hello World!!你好世界</h1>');

瀏覽器原原本本的將內容給出,這是因為text/plain告訴瀏覽器這個是純文本的,如果我們希望瀏覽器可以將內容識別為html,並解析出來,可以這樣寫text/html,text/html告訴瀏覽器這個是html

response.setHeader('Content-Type','text/html;charset=utf-8');
response.write('<h1>Hello World!!你好世界</h1>');

總的來說:http響應報文頭告訴瀏覽器一些其他相關信息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM