14.http模块 - request(请求) 和 response(响应)
import http from 'http'
//本地回环地址是一个特殊的ip地址(通常为 127.0.0.1), 主要用于同一台主机的通信和测试
const hostname = '127.0.0.1' // 服务器监听的ip地址(本地回环地址), 意味着服务器只接受来自本机的网络请求
const port = 8008 //服务器监听的端口号
//http.createServer 创建一个 http 服务器实例
const server = http.createServer((request, response) => {
// ------ request
//request.method: http 请求的方法
//request.url: 请求的 url
console.log(`${request.method} ${request.url}`)
//console.log(request.headers) //http 请求的头部信息
console.log("referer:", request.headers.referer)
console.log("user-agent:", request.headers['user-agent'])
console.log("\n") //换行
// ------ response
response.statusCode = 200 //200 状态码表示请求成功
response.setHeader('Content-Type', 'text/html; charset=UTF-8') //设置内容类型为 'text/html; charset=UTF-8' 的响应头
//response.end("<h3>dengruicode.com</h3>") //发送响应数据并结束响应
response.write("<h3>dengruicode.com</h3>")
response.end()
})
//启动 http 服务器,并在指定的ip地址(127.0.0.1)和端口(8008)上监听连接请求
server.listen(port, hostname, () => {
console.log(`服务器已启动: http://${hostname}:${port}`)
})
说明
{
host: '127.0.0.1:8008',
connection: 'keep-alive',
'cache-control': 'max-age=0',
'sec-ch-ua': '"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'sec-fetch-site': 'none',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'sec-fetch-dest': 'document',
'accept-encoding': 'gzip, deflate, br, zstd',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'
}
host: '127.0.0.1:8008'
请求的目标服务器地址和端口号
connection: 'keep-alive'
使用持久连接, 即在一个TCP连接上可以发送多个HTTP请求
'cache-control': 'max-age=0'
最大缓存时间为0, 表示不使用缓存, 每次请求都需要从服务器获取最新的数据
'sec-ch-ua': '"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"'
浏览器的用户代理字符串, 用于告诉服务器客户端使用的浏览器类型和版本信息
'sec-ch-ua-mobile': '?0'
是否为移动设备, 0表示非移动设备
'sec-ch-ua-platform': '"Windows"'
运行浏览器的平台
'upgrade-insecure-requests': '1'
客户端希望升级到更安全的协议, 如HTTPS
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
客户端的用户代理字符串, 描述了浏览器和操作系统等信息
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'
可接受的内容类型, 包括文本/html、xml、图像等
'sec-fetch-site': 'none'
请求的来源站点, none表示没有来源站点
'sec-fetch-mode': 'navigate'
请求的模式, navigate表示页面导航请求
'sec-fetch-user': '?1'
请求是否涉及用户行为, ?1表示可能涉及用户行为
'sec-fetch-dest': 'document'
请求的目标, document表示请求的目标是文档
'accept-encoding': 'gzip, deflate, br, zstd'
客户端可以接受的压缩编码格式
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'
客户端接受的语言及其优先级
注
referer: 'http://127.0.0.1:8008/'
发送请求的页面地址, 服务器通常用来获取请求来源的信息