Не могу подключиться к серверу 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 шт):

Автор решения: Werryx

Я решил эту проблему

Я перепробовал всё, но в конце концов я решил сгенерировать 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 работает

→ Ссылка