Node.js Error: Protocol “https:“ not supported. Expected “http:“
const http = require('http')
const https = require('https')
let urlCdn = "https://baidu.com"
let urlObj = new URL(urlCdn)
const client = urlObj.protocol == 'https:' ? https : http
console.log(urlObj.protocol)
client.get(urlCdn, async (httpRes) => {
})
Node的http模块:使用node创建htto服务器(重点)
1、web服务器:网站服务器,主要提供网上信息的浏览服务
2、web资源
(1)静态资源:服务器没有修改的,客户端每次请求的结果都是一样的资源。(CSS、image等)
(2)动态资源:经过服务器处理的资源信息
3、HTTP协议:HyperText Transfer Protocol,超文本传输协议。规范了客户端和服务器之间进行交互的数据格式。是基于’请求‘--’响应‘的协议
(1)请求(request):客户端(浏览器)向服务器发送信息(发送请求)--http请求
(2)响应(response):服务器接收到客户端的请求后做的响应--http响应
(3)内容:
基本信息:请求地址(url)、请求方式(get/post)、请求-响应是否完成、路由地址(ip地址)
响应头形象:http协议的版本号、200是状态码(表示请求-响应已经完成)、响应文本的格式
请求头信息:User-Agent(客户端浏览器的内核)、Host(请求的服务器的地址和端口号)、Accept发送请求的文本格式
(4)状态码:不同的状态码反应了请求--响应过程的完成情况
200:请求-响应的过程已经成功完成
204:请求-响应已经完成,但是没有响应数据
以3开头的状态码表示页面重定向了
404:客户端请求的资源不存在
403:服务器拒绝请求
400:请求的语法错误
500:服务器错误,无法响应请求
503:服务器无法使用
(5)响应信息的格式:采用‘大类型/具体类型’的方式定义
text/plain:普通文本格式
text/html:html文件
text/css:css文件
application/javascript:js文件
4、node中http模块的应用:
(1)导入:require(‘http’)
(2)创建服务器:http.createServer(function(){ }),返回一个http的服务器对象
(3)启动服务器监听:listen(端口号,服务器地址、callback)
5、在服务器端获取客户端请求数据的方式 :是通过请求对象request来完成的
(1)req.method:获取客户端的请求方式
(2)req.url:获取客户端的请求地址
(3)req.url.query:获取的是客户端采用get方式向服务器发送的请求数据
get方式发送的请求数据:是拼接在url地址之后的
http://127.0.0.1:9000?userName=张三&age=25
‘?’:是url和请求参数(query)之间的分隔符
‘&’:是参数之间的分隔符
(4)req.body:获取的是客户端采用post方式向服务器发送的请求数据
post方式发送请求时:先将请求地址单独发送出去,然后将请求参数和页面的body绑定在一起进行发送
在node的http服务器端需要使用querystring模块对客户端发送的body信息进行转换后才能得到请求参数
参考链接: