由于 MIME 类型,我的 html 上出现错误

Posted

技术标签:

【中文标题】由于 MIME 类型,我的 html 上出现错误【英文标题】:Error on my html because of type MIME 【发布时间】:2018-10-19 10:59:37 【问题描述】:

所以我的项目有问题,我开发了一个节点 js 服务器,现在我想显示一个 html 文件,其中包含一个 Vue 脚本,由于另一个 JS 文件中编写的另一种方法,该脚本加载了数据。

但是当我尝试在我的浏览器上加载我的 html 文件时,我遇到了这个错误:拒绝从 'http://localhost:8080/src/verbatims.js' 执行脚本,因为它的 MIME 类型('text/html')是不可执行的,并且严格的 MIME 类型检查已启用。

这是我的html代码:

<!DOCTYPE html>
<html lang="fr">

    <head>
        <meta charset="utf-8">
        <meta content="X-Content-Type-Options: nosniff">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">

       <script src="/src/verbatims.js" type="application/javascript"></script>

        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.18/vue.min.js"></script>


        <title>My project</title>
    </head>

    <body>
        <div id="data">
            Le nombre de requête est de  :  request <br>
            <button v-on:click="change">Change value</button>
            <button v-on:click="stop">Arrêter</button>
        </div>

        <script>
            let app = new Vue(
                el:'#data',
                data: 
                    request: "toto",
                    ite: 0
                ,
                methods: 
                    change: function() 
                        changeNbRequest()
                    ,
                    stop: function() 
                        clearInterval()
                    
                
            );

            changeNbRequest = function() 
                var timer = setInterval(function() 
                    let verbatim = new Verbatims().list()[ite];
                , 5000);
            
        </script>
    </body>
</html>

我检查了项目中的每种类型 MIME,但没有任何效果。

有什么想法吗?

非常感谢!

编辑:这是我的服务器代码:

const express = require('express')
const RouterVerbatim = require('./routerVerbatim')
const fs = require('fs')

class Server 

  constructor() 
    this.app = express()

    this.app.get('/', function (req, res) 
      res.send('Hello World')
    )

    this.app.get('/index', function (req, res) 
      res.writeHead(200, 'Content-Type': 'text/html');
      fs.readFile(__dirname + '/View/index.html', function (err,data) 
          res.end(data);
      );
    )

    this.app.get('../src/verbatims.js', function (req, res) 
      res.writeHead(200, 'Content-Type': 'text/javascript');
      fs.readFile('../src/verbatims.js', function (err,data) 
          res.end(data);
      );
    )

    this.app.use('/verbatims', new RouterVerbatim().router)
  

  start() 
    this.app.listen(8080, function() 
      console.log('Exemple app listening on port 8080!')
    )
  


module.exports = Server;

【问题讨论】:

根据您提供的信息,我们无法判断您的网络服务器为何声称 /src/verbatims.js 是 HTML 文档。 这可能是一个 404 html 错误页面 - 尝试使用 &lt;script src="src/verbatims.js" type="application/javascript"&gt;&lt;/script&gt; 而不是 /src - 您也可能希望在任何其他 js 文件之前加载 vue.js @Quentin 你需要什么? @mplungjan 我尝试过这种方式,但我遇到了同样的错误 @MissKnacki — 足够的细节来确定服务器如何决定它将做出什么响应。 【参考方案1】:
'../src/verbatims.js'

浏览器永远不会在 URL 中发送带有../ 的请求。

它会在发送前规范化路径。

您需要将路由指定为/src/verbatims.js


您还应该考虑使用静态文件处理中间件,而不是手动为每个中间件创建路由。

【讨论】:

好的,非常感谢,我已经规范化了路径,它可以工作了! 我已经尝试使用静态文件处理中间件,但它不起作用:/

以上是关于由于 MIME 类型,我的 html 上出现错误的主要内容,如果未能解决你的问题,请参考以下文章

由于 MIME 错误,CSS 在网页上不起作用

由于 MIME 类型错误而拒绝应用样式

由于 MIME 类型而未加载样式表

由于 MIME 类型而未加载样式表

由于 MIME 类型错误,Chrome 拒绝执行 AJAX 脚本

来自 AWS Elastic Beanstalk 的 Mime 类型错误