摘要:發(fā)送響應頭信息參數用于指定一個三位的狀態(tài)碼參數值為一個字符串,用于指定對該狀態(tài)碼的描述信息為一個對象,用于指定服務器端創(chuàng)建的響應頭對象用于指定內容類型用于將客戶端重定向到另一個地址用于指定一個被下載的文件名用于指定服務器端響應內容的編
1. 發(fā)送HTTP響應頭信息
response.writeHead(statusCode, [reasonPhrase], [headers])
statusCode:參數用于指定一個三位的HTTP狀態(tài)碼
reasonPhrase:參數值為一個字符串,用于指定對該狀態(tài)碼的描述信息
headers:為一個對象,用于指定服務器端創(chuàng)建的響應頭對象
content-type:用于指定內容類型
location:用于將客戶端重定向到另一個url地址
content-disposition:用于指定一個被下載的文件名
content-length:用于指定服務器端響應內容的編碼格式
set-cookie:用于在客戶端創(chuàng)建一個cookie
content-encoding:用于指定服務器端響應內容的編碼方式
Cache-Control:用于開啟緩存機制
Expires:用于指定緩存過期時間
Etag:用于指定當服務器端響應內容沒有變化時不重新下載數據
多帶帶設置響應頭信息
可以使用http.ServerResponse對象的setHeader方法多帶帶設置響應頭信息。
* `response.setHeader(name, value)` * `res.setHeader("Content-Type", "text/type");`
獲取響應頭某個字段的值
response.getHeader(name);
res.getHeader("Content-Type");
刪除一個響應字段
response.removeHeader(name);
res.removeHeader("Content-Type");
檢測響應頭是否已經發(fā)送
response.headersSent();
已發(fā)出,為true
未發(fā)送,為false
Date字段
默認情況下HTTP服務器會自動將服務器端當前時間作為響應頭中的Date字段值發(fā)送給客戶端,可以通過將res.sendDate屬性值設置為false的方法,在響應頭中刪除Date字段
res.sendDate = false;
簡單的HTTP服務器
const http = require("http"); let server = http.createServer(function (req, res) { if (req.url !== "/favicon.ico") { res.write(""); res.sendDate = false; // 不發(fā)送時間 if (res.headersSent) { console.log("第一個響應頭已經發(fā)送"); } else { console.log("第一個響應頭未發(fā)送"); } res.writeHead(200, {"Content-Type": "text/html"}); if (res.headersSent) { console.log("第二個響應頭已經發(fā)送"); } else { console.log("第二個響應頭未發(fā)送"); } res.write("hello, this is http server response content"); } res.end(); }).listen(2596, "localhost", function () { console.log("the http server is running at localhost:3333") });
響應數據的尾部追加一個頭信息
res.addTrailers(headers)
const http = require("http"); let server = http.createServer(function (req, res) { if (req.url !== "/favicon.ico") { res.writeHead(200, {"Content-Type": "text/plain", "Trailer": "Content-MD5"}); res.addTrailers({"Content-MD5": "5Q8W9XS5AS98ZX2X5V8V3ZX3ZA8"}); res.write("hello, these are some new massage"); } res.end(); }).listen(3333, "localhost", function () { console.log("the http server is running at localhost:3333") });2. 創(chuàng)建HTTP服務器
const http = require("http"); const fs = require("fs"); const PORT = 2596; let server = http.createServer((req, res) => { if (req.url !== "/favicon.ico") { let out = fs.createWriteStream("./requestCurl.log"); out.write("客戶端請求的方法為:" + req.method + " "); out.write("客戶端請求的url字符串為:" + req.url + " "); out.write("客戶端請求頭對象為:" + JSON.stringify(req.headers) + " "); out.write("客戶端請求所用的HTTP版本為:" + req.httpVersion + " "); req.on("data", function (data) { console.log("服務器端接收到數據:" + data); }); req.on("end", () => { console.log("客戶端請求數據已全部接收完畢"); }) } res.end(); }).listen(PORT, "localhost"); server.on("listening", () => { console.log(`server start listen localhost:${PORT}`); }); server.on("connection", (socket) => { console.log("client and server had been connected"); }); setTimeout(10 * 1000, (socket) => { console.log("server response timeout"); }); server.on("error", (err) => { if (e.code === "EADDRINUSE") { console.log("the port has been used,please change your server port"); } server.on("close", () => { console.log("server closed"); }); }); /*** * 客戶端請求的方法為:GET * 客戶端請求的url字符串為:/ * 客戶端請求頭對象為:{"user-agent":"curl/7.29.0","host":"localhost:2596","accept":"*|*"} * 客戶端請求所用的HTTP版本為:1.1 * */3. 創(chuàng)建HTTP客戶端
當客戶端請求獲取到服務器響應流時,觸發(fā)res.on("data", (chunk) => {})事件
const http = require("http"); let options = { hostname: "www.qq.com", port: 80, path: "/", method: "GET" }; let req = http.request(options, (res) => { console.log(`狀態(tài)碼:${res.statusCode}`); console.log(`響應頭:${JSON.stringify(res.headers)}`); res.setEncoding("utf8"); res.on("data", (chunk) => { console.log(`響應內容:`); }) }); req.on("response", (res) => { console.log(res); // IncomingMessage }); req.on("error", (err) => { if (err.code === "ECONNRESET") { console.log("socket端口超時"); } else { console.log("在請求數據過程中發(fā)生錯誤,錯誤代碼為:" + err.code) } }); req.end(); /** * 狀態(tài)碼:200 * 響應頭:{ * "server": "squid/3.5.24", * "date": "Sun, 25 Feb 2018 14:09:11 GMT", * "content-type": "text/html; charset=GB2312", * "transfer-encoding": "chunked", * "connection": "close", * "vary": "Accept-Encoding, Accept-Encoding, Accept-Encoding, Accept-Encoding", * "expires": "Sun, 25 Feb 2018 14:10:11 GMT", * "cache-control": "max-age=60", * "x-cache": "HIT from shenzhen.qq.com" * } * * **/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92888.html
摘要:中各種用于讀取數據的對象對象描述用于讀取文件代表客戶端請求或服務器端響應代表一個端口對象用于創(chuàng)建子進程的標準輸出流。如果子進程和父進程共享輸入輸出流,則子進程的標準輸出流被廢棄用于創(chuàng)建子進程的標準錯誤輸出流。 9. stream流 fs模塊中集中文件讀寫方法的區(qū)別 用途 使用異步方式 使用同步方式 將文件完整讀入緩存區(qū) readFile readFileSync 將文件部...
摘要:將非標準路徑字符串轉換為標準路徑字符串解析路徑字符串中的和字符串,返回解析后的標準路徑將多個斜杠字符串轉換為一個斜杠字符串,例如將轉換為將操作系統(tǒng)中的反斜杠字符串轉換為正斜杠字符串如果路徑字符串以斜杠字符串結尾則在轉換后的完整路徑字符串末尾 Path 1. normalize()將非標準路徑字符串轉換為標準路徑字符串 解析路徑字符串中的..和.字符串,返回解析后的標準路徑 將多個斜杠...
摘要:域套接字使用或指定請求方法的字符串。請求路徑包含非法字符時拋出異常。保持資源池周圍的套接字在未來被用于其它請求。默認值為當使用的時候,通過正在保持活動的套接字發(fā)送包的頻繁程度。 文章來源:小青年原創(chuàng)發(fā)布時間:2016-09-29關鍵詞:JavaScript,nodejs,http,url ,Query String,爬蟲轉載需標注本文原始地址: http://zhaomenghuan....
摘要:基本介紹這是一個基本的環(huán)境搭建不同的操作系統(tǒng)可以選擇不同的安裝方式如果不需要太多的安裝步驟就直接在官網下載最新版安裝包進行安裝即可環(huán)境配置必須安裝的軟件更改源與更新系統(tǒng)首先備份下載的源配置文件運行生成緩存更新系統(tǒng)安裝使用安裝命 基本介紹 這是一個基本的Node.js環(huán)境搭建,不同的操作系統(tǒng)可以選擇不同的安裝方式 如果不需要太多的安裝步驟,就直接在Node.js官網下載最新版安裝包進行...
閱讀 1083·2021-09-22 15:19
閱讀 1697·2021-08-23 09:46
閱讀 2226·2021-08-09 13:47
閱讀 1405·2019-08-30 15:55
閱讀 1408·2019-08-30 15:55
閱讀 1974·2019-08-30 15:54
閱讀 2795·2019-08-30 15:53
閱讀 713·2019-08-30 11:03