(精华)2020年7月7日 Node.js http,https,tcp服务的创建
【摘要】
HTTP协议
const http = require('http');
const fs = require('fs');
//request
//response
// eventEmitter
...
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。
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
TCP协议
var net = require("net");
// tcp服务端
server1 = net.createServer(function(client){
// 给客户端返回数据
client.write('Hello World!\r\n');
});
server1.listen(9001);
// telnet localhost 9001
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
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);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/107193755
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)