(精华)2020年7月7日 Node.js http,https,tcp服务的创建
发布日期:2021-06-29 15:06:46 浏览次数:2 分类:技术文章

本文共 3547 字,大约阅读时间需要 11 分钟。

HTTP协议

const http = require('http');const fs = require('fs');//request//response// eventEmitter// 响应简单请求// get/post/head,没有自定义请求头,// Content-Type是// application/x-www-form-urlencoded,// multipart/form-data或text/plain之一,// 跨域:通过添加以下响应头解决: // res.setHeader('Access-Control-Allow-Origin', 'http://192.168.0.102:8080')http.createServer(function (request, response) {
const {
url, method, headers } = request; console.log(method) response.setHeader('Access-Control-Allow-Headers', 'XX-Token,Content-Type'); response.setHeader('Access-Control-Allow-Origin', ' http://192.168.0.102:8080'); response.setHeader('Access-Control-Allow-Credentials', 'true'); // setPageHeader(response); //或者放一个函数里 if (method == "OPTIONS") {
//允许跨域 response.end(); } if (url == '/' && method == 'GET') {
fs.readFile('index.html', (err, data) => {
if (err) {
response.writeHead(500, {
'Content-Type': 'text/pain;charset=utf-8' }); response.end('服务器错误'); return; } response.statusCode = 200; response.setHeader('Content-Type', 'text/html'); response.end(data); }) } else if (url == '/users' && method === 'GET') {
response.setHeader('Set-Cookie', 'cookie1=va222;') response.statusCode = 200 response.setHeader('Content-Type', 'text/html') response.end(JSON.stringify({
name: 'laney' })) } else if (url == '/list' && method === 'GET') {
response.statusCode = 200 response.setHeader('Content-Type', 'text/html') response.end(JSON.stringify({
name: 'sss' })) }}).listen(3000, function () {
console.log('监听到3000');});function setPageHeader(res) {
res.setHeader('Access-Control-Allow-Origin', 'http://192.168.0.102:8080'); //允许任何源 // res.setHeader('Access-Control-Allow-Origin', '*'); //允许任何源 ,如果服务器要求浏览器发送 Cookie,这是不能设置为* res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // res.setHeader('Access-Control-Allow-Methods', '*'); res.setHeader('Access-Control-Allow-Headers', 'X-Token,Content-Type') // res.setHeader('Access-Control-Allow-Headers', '*'); //允许任何类型 // 服务器可能需要拿到 Cookie,这时需要服务器显式指定Access-Control-Allow-Credentials字段, // 告诉浏览器可以发送 Cookie // 同时,开发者必须在 AJAX 请求中打开withCredentials属性。 // res.setHeader('Access-Control-Allow-Credentials', 'true'); //允许携带cookie,true 允许携带cookie false 不携带 // 需要注意的是,如果服务器要求浏览器发送 Cookie,Access-Control-Allow-Origin就不能设为星号, // 必须指定明确的、与请求网页一致的域名。同时,Cookie 依然遵循同源政策, // 只有用服务器域名设置的 Cookie 才会上传,其他域名的 Cookie 并不会上传, // 且(跨域)原网页代码中的document.cookie也无法读取服务器域名下的 Cookie。}

TCP协议

var net = require("net");// tcp服务端server1 = net.createServer(function(client){
// 给客户端返回数据 client.write('Hello World!\r\n');});server1.listen(9001);// telnet localhost 9001

HTTPS协议

首先生成公钥和私钥

openssl# 生成私钥genrsa -out id_rsa_private 2048# 生成私钥(把RSA私钥转换成PKCS8格式)pkcs8 -topk8 -inform PEM -in id_rsa_private -outform pem -nocrypt -out id_rsa_private_pkcs# 生成公钥rsa -in id_rsa_private -pubout -out id_rsa_public.pub
const https = require('https');const fs = require('fs');const key = fs.readFileSync('./key.pem');const cert = fs.readFileSync('./cert.pem');const options = {
key:key, cert:cert};https.createServer(options, (req, res) => {
res.writeHead(200); res.end('hello world-----\n');}).listen(8000);

转载地址:https://codeboy.blog.csdn.net/article/details/107193755 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:(精华)2020年7月8日 Node.js ws和websocket.io的使用
下一篇:(精华)2020年7月6日 Node.js express(手写版)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年05月01日 08时07分49秒