Node.js路由错误:脚本MIME类型不允许在' X-Content-Type:nosniff'给出

时间:2018-05-03 16:13:59

标签: javascript css node.js routes mime-types

我的 css js 文件未找到/未在第二条路线下加载。它们首先加载正常。

为什么会这样?

  // **********************  INDEX PAGE  *******************************************
    app.get('/LimeLINE', (req, res) => {
        let sTopHtml = fs.readFileSync(__dirname + '/components/top.html', 'utf8')
        let sMainHtml = fs.readFileSync(__dirname + '/html/index.html', 'utf8')
        let sBottomHtml = fs.readFileSync(__dirname + '/components/bottom.html', 'utf8')

        // replace placeholders
        sTopHtml = sTopHtml.replace('{{title}}', 'LimeLINE: Get Started')

        res.send(sTopHtml + sMainHtml + sBottomHtml)
    })

    app.get('/LimeLINE/activate/:token', (req, res) => {
        let sToken = req.params.token;
        if (token === sToken) {
            user.activateUser(res, sToken)
        }
        let sTopHtml = fs.readFileSync(__dirname + '/components/top.html', 'utf8')
        let sMainHtml = fs.readFileSync(__dirname + '/html/index.html', 'utf8')
        let sBottomHtml = fs.readFileSync(__dirname + '/components/bottom.html', 'utf8')
        // replace placeholders
        sTopHtml = sTopHtml.replace('{{title}}', 'LimeLINE: Welcome')
        sMainHtml = sMainHtml.replace('{{click-trigger}}', 'click-trigger')

        res.send(sTopHtml + sMainHtml + sBottomHtml)
    })

1 个答案:

答案 0 :(得分:2)

您应该避免在将从不同路线提供的模板中使用相对网址。在这种情况下,同一个html是从http://<hostname>/LimeLINE以及http://<hostname>/LimeLINE/activate/:token投放的。 ../css/main.css的相对网址将指向这两种情况下的不同位置。由于浏览器不知道服务器上的目录结构,它只是构造相对于当前url的路径(在地址栏中)。

对于第一种情况,它变为http://hostname/../css/main.css,与http://hostname/css/main.css相同;

在第二种情况下,http://<hostname>/LimeLINE/activate/../css/main.csshttp://<hostname>/LimeLINE/css/main.css相同。

只需更改为绝对网址(或相对于主机网址,以/开头),您的代码就可以正常工作。代替 href="../css/main.css"使用href="/css/main.css"