http服务器
const http = require("http");const url = require("url");const querystring = require("querystring");let server = http.createServer((req, res) => {let pathname = url.parse(req.url).pathname;console.log("pathname: " + pathname);let body = "";req.on("data", (data) => {body += data;});req.on("end", () => {res.writeHead(200, { "content-type": "text/plain" });if (req.method === "GET") {let query = querystring.parse(url.parse(req.url).query);console.log("query:%j", query);res.end("http-server-get");} else if (req.method === "POST") {let query = querystring.parse(body);console.log("query:%j", query);res.end("http-server-post");}});});server.listen(1234, () => {console.log("服务器启动监听localhost:1336");});
http客户端
const http = require("http");const querystring = require("querystring");const options = {hostname: "localhost",port: 1234,path: "/info/child?abc=123&name=china",method: "GET",// method: "POST",};const contents = querystring.stringify({name: "china",abc: 456,});const req = http.request(options, (res) => {console.log("status:" + res.statusCode);console.log("headers:" + res.headers);res.setEncoding("utf8");res.on("data", (data) => {console.log("response:" + data);});});// req.write(contents);req.end();
https服务器
https需要访问秘钥和证书文件
安装了openssl,生成证书
/*** ssl证书生成**/openssl genrsa -out privatekey.pem 1024 【生成privatekey.pem私钥】openssl req -new -key privatekey.pem -out certrequest.csr 【生成certrequest.csr签名】openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem 【生成certificate.pem签名证书】
https服务默认端口443。
const https = require("https");const url = require("url");const fs = require("fs");var options = {key: fs.readFileSync("../privatekey.pem"),cert: fs.readFileSync("../certificate.pem"),passphrase: "123456", //你的密码};const server = https.createServer(options, function (req, res) {var pathname = url.parse(req.url).pathname;console.log("pathname:" + pathname);res.writeHead(200, { "Content-Type": "text/plain" });res.end("hello-server");});server.listen(443, () => {console.log("服务器监听localhost:443");});
https客户端
var options={hostname:"localhost",port:443,path:"/info?abc=123&name=China",method:"GET"};options.agent = new https.Agent(options);//构造https请求(客户端)【自签名证书非法,应该使用正式正式】var req=https.request(options,function(res){console.log("STATUS:"+res.statusCode);console.log("HEADERS:%j",res.headers);res.setEncoding("utf8");res.on("data",function(chunk){console.log("response:"+chunk);});});req.end();//发送请求
通过浏览器去验证一下你的https服务器,https://localhost:443/find?name=123
浏览器默认会阻止打开未认证的https页面,可以输入thisisunsafe
