Не могу подключиться к серверу node.js через 192.168.x.x
При помощи Advanced IP Scanner я узнал, что мой локальный IP - 192.168.0.102
Я запустил сервер Node.js и могу спокойно подключиться к нему через localhost, но когда я пробую подключиться по адресу http://192.168.0.102 (обратите внимание на http), то в консоли браузера я получаю такие ошибки:
GET https://192.168.0.102/static/style.css 192.168.0.102/:8
net::ERR_CONNECTION_REFUSED
GET https://192.168.0.102/socket.io/socket.io.js 192.168.0.102/:7
net::ERR_CONNECTION_REFUSED
И т.д.
То есть я подключаюсь к http://192.168.0.102, а Google Chrome пытается получить файлы с https://192.168.0.102. При подключении к 192.168.0.102 загружается только файл index.html
Вот мой код:
var express = require("express");
var http = require("http");
var path = require("path");
var sio = require("socket.io");
var helmet = require("helmet");
var app = express();
var server = http.Server(app);
var io = sio(server);
const PORT = 80;
app.set("port", PORT);
app.use(helmet())
app.use("/static", express.static(__dirname + "/static"));
app.use("/image", express.static(__dirname + "/image"));
app.use('/favicon.ico', express.static(__dirname + '/favicon.ico'));
function page_main(req, resp) {
resp.sendFile(__dirname + "/index.html");
}
function on_run() {
console.log("Сервер запущен на порту " + PORT);
}
app.get("/", page_main);
server.listen(PORT, on_run);
Если я подключаюсь к http://localhost, то никаких ошибок в консоли Google Chrome нет и все файлы загружаются
C:\XAMPP\htdocs\sqcr>npm version
{
sqcr: '1.0.0',
npm: '7.19.1',
node: '16.2.0',
v8: '9.0.257.25-node.16',
uv: '1.41.0',
zlib: '1.2.11',
brotli: '1.0.9',
ares: '1.17.1',
modules: '93',
nghttp2: '1.42.0',
napi: '8',
llhttp: '6.0.1',
openssl: '1.1.1k+quic',
cldr: '39.0',
icu: '69.1',
tz: '2021a',
unicode: '13.0',
ngtcp2: '0.1.0-DEV',
nghttp3: '0.1.0-DEV'
}
Ответы (1 шт):
Я решил эту проблему
Я перепробовал всё, но в конце концов я решил сгенерировать SSL сертификат
Также я сделал перенаправление с HTTP на HTTPS. Вот мой код:
var express = require("express");
var https = require("https");
var fs = require("fs");
var path = require("path");
var sio = require("socket.io");
var helmet = require("helmet");
const PORT = 443;
const HTTP_PORT = 80;
function page_main(req, resp) {
resp.sendFile(__dirname + "/index.html");
}
function http_page(req, resp) {
resp.sendFile(__dirname + "/http/index.html");
}
function on_run() {
console.log("HTTPS Сервер запущен на порту " + PORT);
}
function http_run() {
console.log("HTTP Сервер запущен на порту " + HTTP_PORT);
}
var app2 = require("express")();
var httpServer = require("http").Server(app2);
app2.get("/", http_page);
httpServer.listen(HTTP_PORT, http_run);
var app = express();
var ssl = {
key: fs.readFileSync("key.pem"),
cert: fs.readFileSync("cert.pem")
}
var server = https.createServer(ssl, app);
var io = sio(server);
app.set("port", PORT);
app.use(helmet());
app.use("/static", express.static(__dirname + "/static"));
app.use("/image", express.static(__dirname + "/image"));
app.use('/favicon.ico', express.static(__dirname + '/favicon.ico'));
app.get("/", page_main);
server.listen(PORT, on_run);
Файл ./http/index.html:
<script>location.protocol="https"</script>
Я сгенерировал SSL сертификат при помощи minica (minica --domains localhost) и теперь 192.168.0.102 работает