我有一个非常奇怪的问题。我已经在一个项目上工作了2个月。我在一台Windows机器上开发,使用Docker进行容器化,然后上传到一个云服务。突然之间,单个javascript文件开始返回404。通过X-Content-Type-Options“nosniff”报头,它表明MIME类型是text/html,这揭示了有关问题的更多信息。我有一个非常相似的文件,工作正常。我有许多其他的js文件也很好。只有这一个这样做,它最近才开始。
GET https://localhost:8080/assets/dashboard/js/xxx.js net::ERR_ABORTED 404
Refused to execute script from 'https://localhost:8080/assets/dashboard/js/xxx.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
如果没有X内容类型选项“nosniff”,则简单地
GET https://localhost:8080/assets/dashboard/js/xxx.js net::ERR_ABORTED 404
我在Google上搜索了一下行尾的问题,发现所有的行尾都是CRLF。我用Notepad++检查了工作文件和非工作文件,行尾是一样的。然后我安装了XAMPP,看看它在Linux下运行时的表现如何(就像在集装箱里一样)而且它也工作得很好。只有当我用Docker集装箱化的时候它才停止工作。这可能是Docker for Windows应用程序的最近更新导致的,但我不知道如何解决这个问题了。我检查了文件的违规行为-没有发现。任何帮助将不胜感激。
执行Invoke-WebRequest请求时,标头:
$request.Headers
Key Value
--- -----
Date {Mon, 05 Dec 2022 22:21:04 GMT}
Server {Apache}
Cache-Control {no-store, must-revalidate, no-cache, max-age=0}
X-Frame-Options {DENY}
X-XSS-Protection {0}
Referrer-Policy {strict-origin-when-cross-origin}
Strict-Transport-Security {max-age=63072000; includeSubDomains; preload}
Permissions-Policy {display-capture=(),accelerometer=(),autoplay=(),camera=(),display-capture=(),docume…
X-Permitted-Cross-Domain-Policies {none}
Cross-Origin-Embedder-Policy {unsafe-none}
Cross-Origin-Opener-Policy {same-origin}
Cross-Origin-Resource-Policy {same-origin}
Content-Security-Policy {upgrade-insecure-requests;default-src 'none';style-src 'self' 'unsafe-inline' https…
Content-Length {4281}
Content-Type {text/html; charset=UTF-8}
1条答案
按热度按时间ulydmbyx1#
我以前遇到过这个问题。Windows不关心大写,而Linux关心。
检查你是如何调用你的文件和它的名字在现实中是什么。
您将其屏蔽为xxx.js,但让我们使用以下示例:
但如果实际上您的文件名为
Main.js
,Windows将很好- Linux将返回404。MIME类型错误确实令人困惑,无助于解决此问题。