[英]Node.js route error: script MIME types are not allowed when 'X-Content-Type: nosniff' is given
My css and js files are not found / does not load under second route . 我的css和js文件未找到/不在第二条路径下加载。 They do load fine under first.
他们确实在第一下很好。
Why does this happen ? 为什么会这样?
// ********************** 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)
})
You should avoid using relative urls in templates which will be served from different routes. 您应避免在模板中使用相对的网址,这些网址将通过不同的路径进行投放。 In this case same html is getting served from
http://<hostname>/LimeLINE
as well as http://<hostname>/LimeLINE/activate/:token
. 在这种情况下,将从
http://<hostname>/LimeLINE
以及http://<hostname>/LimeLINE/activate/:token
提供相同的html。 The relative url of ../css/main.css
will point to different locations in those two cases. 在这两种情况下,
../css/main.css
的相对URL将指向不同的位置。 Since the browser doesn't know about the directory structure on your server, it simply constructs the path relative to current url (in address bar). 由于浏览器不知道服务器上的目录结构,因此它只是构造相对于当前url的路径(在地址栏中)。
For the first case it becomes http://hostname/../css/main.css
which is same as http://hostname/css/main.css
; 对于第一种情况,它变为
http://hostname/../css/main.css
,与http://hostname/css/main.css
相同;
And in second case it is http://<hostname>/LimeLINE/activate/../css/main.css
which is same as http://<hostname>/LimeLINE/css/main.css
. 第二种情况是
http://<hostname>/LimeLINE/activate/../css/main.css
与http://<hostname>/LimeLINE/css/main.css
。
Just change to absolute urls (or relative to host urls, starting with /) and your code will work fine. 只需更改为绝对URL(或相对于主机URL,以/开头),您的代码即可正常工作。 Instead of
href="../css/main.css"
use href="/css/main.css"
代替
href="../css/main.css"
使用href="/css/main.css"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.