javascript 错误:由于MIME类型(“text/html”)不匹配而被阻止(X-Content-Type-Options:无嗅闻)

t5zmwmid  于 2023-03-21  发布在  Java
关注(0)|答案(6)|浏览(638)

我试图使用express和 AJAX 测试一些API调用,但如果我将js脚本分离到自己的文件中,则会出现以下错误:
由于MIME类型(“text/html”)不匹配,来自“http://localhost:9000/userProfileFunctions.js“的资源被阻止(X-Content-Type-Options:nosniff)。
如果我将所有内容都保存在同一个html文件中,它就可以工作,但这更像是解决问题的创可贴。我甚至将express app.use header设置为“X-Content-Type-Options:nosniff”但它仍然不工作
main.html

<html>

<head>
    <script
            src="https://code.jquery.com/jquery-3.4.1.min.js"
            integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
            crossorigin="anonymous">
    </script>

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

</head>
<body>
    <form>
        <h4>GET REQUEST USERS PROFILE</h4>
        UUID: <input id="getUserInput" type="text" name="UUID"><br>
        <input id="getUserProfile" type="button" value="submit">
    </form>
</body>
</html>

app.js

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});
um6iljoc

um6iljoc1#

这不是一个非常技术性的答案,但我在测试中遇到了同样的错误,即使生产版本可以工作。当我关闭Firefox(开发者版)中的增强跟踪保护时,错误消失了。

n3h0vuf2

n3h0vuf22#

对我来说,它可以将所有的JS文件放入一个包含静态文件的文件夹中,并在express文件中添加以下行:app.use(express.static(__dirname + '/static'));
我相信如果有人面临同样的问题,这是一个很好的选择。

06odsfpq

06odsfpq3#

这是因为文件的位置已经改变了。检查路径并将脚本的src标记更新为正确的位置。

/ChangeLocation/userProfileFunctions.js

示例:

<script type="application/javascript" src="/NewLocation/userProfileFunctions.js/">
anhgbhbe

anhgbhbe4#

把那个JS文件和“导入”的html文件放在同一个目录下。我刚刚解决了同样的问题。

pb3s4cty

pb3s4cty5#

有此问题,请检查您的文件位置是否正确。

x33g5p2x

x33g5p2x6#

我发现这个错误通常是由文件路径中缺少“/”引起的。
示例:

<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css">

会导致错误,但是

<link rel="stylesheet" href="/css/bootstrap.min.css" type="text/css">

不会。请注意href开头多了一个“/”。

相关问题