Docker Apache仅为1个js文件返回text/html MIME类型

py49o6xq  于 2022-12-18  发布在  Docker
关注(0)|答案(1)|浏览(180)

我有一个非常奇怪的问题。我已经在一个项目上工作了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}
ulydmbyx

ulydmbyx1#

我以前遇到过这个问题。Windows不关心大写,而Linux关心。
检查你是如何调用你的文件和它的名字在现实中是什么。
您将其屏蔽为xxx.js,但让我们使用以下示例:

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

但如果实际上您的文件名为Main.js,Windows将很好- Linux将返回404。MIME类型错误确实令人困惑,无助于解决此问题。

相关问题