node.js createserver获取请求值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js createserver获取请求值相关的知识,希望对你有一定的参考价值。
参考技术A 方法说明:该函数用来创建一个HTTP服务器,并将 requestListener 作为 request 事件的监听函数。
语法:
复制代码代码如下:
http.createServer([requestListener])
由于该方法属于http模块,使用前需要引入http模块(var http= require(“http”) )
接收参数:
requestListener 请求处理函数,自动添加到 request 事件,函数传递两个参数:
req 请求对象,想知道req有哪些属性,可以查看 “http.request 属性整合”。
res 响应对象 ,收到请求后要做出的响应。想知道res有哪些属性,可以查看 “http.response属性整合”。
例子:
例子中res指定了响应头,响应体内容为node.js,用end结束。
最后调用listen函数,监听3000端口。
复制代码代码如下:
var http = require('http');
http.createServer(function(req, res)
res.writeHead(200, 'Content-type' : 'text/html');
res.write('<h1>Node.js</h1>');
res.end('<p>Hello World</p>');
).listen(3000);
源码:
复制代码代码如下:
exports.createServer = function(requestListener)
return new Server(requestListener);
; 参考技术B .query 里面去get
使用 createServer() 时如何获取 node.js 服务器可用的 IP
【中文标题】使用 createServer() 时如何获取 node.js 服务器可用的 IP【英文标题】:How to get node.js server available IPs when using createServer() 【发布时间】:2021-08-06 03:54:36 【问题描述】:当我使用以下方式启动一个简单的服务器时:
http-server -S -C cert.pem
我得到了一个可用 IP 的列表,我可以选择一个来连接:
Starting up http-server, serving ./ through https
Available on:
https://192.168.1.2:8080
https://169.254.187.206:8080
https://169.254.74.61:8080
https://127.0.0.1:8080
Hit CTRL-C to stop the server
如何在使用 createServer() 时获得相同的列表?
我试过这个来获取一个地址:
var server = https.createServer(options, function(request, response)
var uri = url.parse(request.url).pathname,
filename = path.join(process.cwd(), uri);
fs.exists(filename, function(exists)
if(!exists)
response.writeHead(404, "Content-Type": "text/plain" );
response.write("404 Not Found\n");
response.end();
return;
if (fs.statSync(filename).isDirectory())
filename += '/index.html';
fs.readFile(filename, "binary", function(err, file)
if(err)
response.writeHead(500, "Content-Type": "text/plain");
response.write(err + "\n");
response.end();
return;
var mimeType = mimeTypes[filename.split('.').pop()];
if (!mimeType)
mimeType = 'text/plain';
response.writeHead(200, "Content-Type": mimeType );
response.write(file, "binary");
response.end();
);
);
).listen(parseInt(port, 10));
var ip = server.address();
console.log("\n\n Static file server running at:\n address: " + ip.address + "\n family: " + ip.family + "\n port: " + ip.port + "\n\n Hit CTRL+C to stop the server");
我得到了:
Static file server running at:
address: undefined
family: IPv6
port: 8080
Hit CTRL+C to stop the server
今天我花了一个小时试图弄清楚为什么我不能再通过 WIFI 连接到我的本地服务器。原来,不知何故,我使用的地址 https://192.168.1.2:8080 已更改为 https://192.168.1.3:8080 而没有添加任何设备...
【问题讨论】:
【参考方案1】:我没有足够的声誉发表评论,所以我把它放在这里我认为可以帮助你。
首先,您应该为您的机器分配一个静态 ip,您可以:
在您的计算机中定义一个 IP,而不是依赖路由器的 DHCP 服务 将您的 DHCP(可能在您的 routeur 配置中)配置为始终为您提供相同的 IP 地址(静态 DHCP)然后,当您使用 listen() 时,您可以将固定 ip 设置为:listen(8080, 192.168.1.2)
【讨论】:
很有趣,但我只是想起了一种更简单、侵入性更小的方法:使用简单的 node.js 服务器列出的第二个地址,它永远不会像我发现的那样改变(即使我发现第一个地址也会改变)断开从 PC 到路由器的 LAN 电缆)-我现在要做,但我仍然很好奇如何获得该 IP 列表。 你可以看一下上面的ip列表:1270.0.1,永远不会改变,它是主机的本地链接,169.xx.xx.xx的ip是DHCP客户端时自动生成的地址计算机找不到/获取IP,并且192.168.1.2通过DHCP影响到您的计算机,请使用静态DHCP修复此问题【参考方案2】:您可以从os
模块获取所有使用networkInterfaces()
地址的网络接口。
文档:https://nodejs.org/api/os.html#os_os_networkinterfaces
如果您检查http-server
的source code,它正在做这样的事情:
var os = require('os');
var ifaces = os.networkInterfaces();
Object.keys(ifaces).forEach(function (dev)
ifaces[dev].forEach(function (details)
if (details.family === 'IPv4')
console.log(details.address);
);
);
【讨论】:
以上是关于node.js createserver获取请求值的主要内容,如果未能解决你的问题,请参考以下文章