Node.js: Странное поведение HTTP-сервера, заголовок `Content-Type`

Здравствуйте. Написал код примитивного HTTP-сервера:

const net = require("node:net");

function getSocketAddress(socket) {
    return `${socket.remoteAddress}:${socket.remotePort}`;
}

function processClient(client, data) {
    console.log(data);
    const answer = 'HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{"key": "value"}';
    client.write(answer);
}

const server = net.createServer();
server.on("connection", client => {
    console.log(`Client ${getSocketAddress(client)} is connected`);
    client.on("end", () => console.log(`Client ${getSocketAddress(client)} is disconnected`));
    client.on("data", data => {
        processClient(client, data.toString());
        client.end();
    });
});
server.listen(5556, () => console.log("server is started"));

Если зайти из браузера на http://127.0.0.1:5556/, то все хорошо:

Если зайти из браузера на http://192.168.88.254:5556/ (адрес, выданный компьютеру роутером), то в консоль сервера выводится чёпопало:


и сервер падает.

Это похоже на то, что браузер во втором случае шлёт шифрованный запрос HTTPS, вместо простого HTTP :thinking:
Однако, если из ответа сервера убрать заголовок Content-Type, вот так:
const answer = 'HTTP/1.1 200 OK\r\n\r\n{"key": "value"}';
то всё становится нормально, по обоим IP-адресам. Но браузер, естественно, перестаёт понимать, что ему пришёл JSON.
Однако, во всех вышеописанных случаях ответ от сервера браузером принимается правильно.

Думаю, вопрос и так понятен. Но на всякий случай - почему в консоль выводится какая-то фигня и почему/как на это влияет заголовок Content-Type (который, кстати, прописан уже после вывода в консоль)?

Сейчас попробовал подключиться по адресу http://192.168.88.254:5556 из других браузеров - google chrome, opera, chromium. Сервер шлёт заголовок Content-Type и в консоли всё нормально.
Но что не так с fireflox и при чём тут Content-Type? :thinking: Это у всех так или только у меня?