Узел http-сервера относительно каталога «..» не передается в response.url - PullRequest
0 голосов
/ 19 сентября 2018

Мне нужно получить доступ к содержимому родительской папки к обслуживаемому содержимому, и относительная папка '..' из путей ресурсов в HTML не переносится на строку http server request.url узла.

const http = require("http");
const fs = require("fs");
const path = require("path");
const WebSocket = require("ws");

let loadedContent = [];
let root = ".";

let httpServer = http.createServer((req, res)=>{
    console.log(req.url);
    if (req.url === "/") {
        req.url = "/novos.html";
    } else {
        req.url = path.join("/", req.url);
    }
    if (!loadedContent[req.url]) {
        console.log(__dirname + req.url);
        if (fs.existsSync(__dirname + req.url)) {
            loadedContent[req.url] = fs.readFileSync(__dirname + req.url);
        } else {
            res.end("content does not exist");
            return;
        }
    }
    res.end(loadedContent[req.url]);
});

httpServer.listen(10209);

/*let wss = new WebSocket.Server({server:httpServer});

wss.on("connection", (ws)=>{
    ws.on("message", (msg)=>{
        console.log("Received", msg);
    });
    ws.send("Hi");
});*/

Мой HTML

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>novos</title>
    <style>
    body {
        margin:0px;
        width:100vw;
        height:100vh;
        overflow:hidden;
        background-color:black;
        transition:all 1s;
        color:rgb(163, 163, 163);
        font-family:'Courier New', Courier, monospace;
    }
    #iLogo {
        position:absolute;
        width:100%;
        top:25%;
        animation-duration: 1.5s;
        animation-name: logoAnim;
        animation-iteration-count: 2;
        animation-direction: alternate;
        opacity:0;
        cursor:text;
    }
    @keyframes logoAnim {
        from {
            opacity:0
        }

        to {
            opacity:1
        }
    }
    #iCmd {
        position:absolute;
        background:transparent;
        color:inherit;
        font-family:inherit;
        font-style:italic;
        font-size:2.5em;
        width:50%;
        left:25%;
        bottom:40%;
        border:none;
        border-bottom-style:dashed;
        border-width:1px;
        border-color:grey;
        animation-duration: 3s;
        animation-name: cmdAnim;
        animation-iteration-count: 1;
    }
    @keyframes cmdAnim {
        0% {
            opacity:0
        }
        98% {
            opacity:0
        }
        100% {
            opacity:1
        }
    }
    </style>
</head>

<body>
    <img id="iLogo" src="res/logo.svg" />
    <input id="iCmd" value="$" />
    <script src="../abbreviated_functions.js"></script>
    <script src="../input.js"></script>
    <script src="../xmath.js"></script>

    <script src="novos.js"></script>

</body>

</html>

Я также пытался использовать "/ .." и "./.."

req.url, но возвращает" /xmath.js "независимо от этихтри попытки.

Я подумал, что, возможно, подключить мою веб-розетку к серверу http, возможно, ее обманывает, но я отключил ее, и никаких изменений.

Я посмотрел на документы http, чтобы узнать, если.... не было разрешено, но я ничего не нашел об этом.

edit- Итак, чтобы сформулировать мой вопрос вместо того, чтобы люди думали, что я хочу, чтобы они исправили мой код: я не понимаю, почему команды относительного пути вверхне передаются в req.url Это я?Это спецификация с узлом http?Я не могу понять источник проблемы здесь.

...