Docker部署Apache时单个JS文件返回text/html MIME类型且报404求助
问题详情
在Windows机器上开发2个月的项目,Docker容器化部署到云服务后,近期出现单个JavaScript文件请求返回404的情况。开启X-Content-Type-Options "nosniff"头时,浏览器提示该文件的MIME类型为text/html,但其他同类JS文件均正常。
已完成排查:
- 用Notepad++确认该文件与正常JS文件的换行符均为CRLF,排除换行符问题
- 项目在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}
排查建议
- 检查容器内文件状态:进入容器执行
docker exec -it <容器ID> bash,用ls -l <目标JS文件路径>确认文件是否存在、权限是否与其他正常JS文件一致(比如是否为644权限,所属用户是否匹配Apache运行用户) - 验证Apache MIME配置:查看容器内Apache的
mime.types文件,确认.js对应的MIME类型是application/javascript;同时检查项目.htaccess文件,是否针对该JS文件有特殊重写或MIME设置 - 排查镜像构建/挂载问题:若使用本地目录挂载,检查Windows侧文件名是否存在大小写差异(Linux区分大小写,Windows不区分);尝试用
docker build --no-cache重新构建镜像,排除构建缓存导致的文件未同步问题 - 查看Apache错误日志:查看容器内Apache错误日志(通常路径为
/var/log/apache2/error.log),搜索该JS文件的请求记录,获取文件不存在、权限拒绝等具体错误信息
内容的提问来源于stack exchange,提问作者Monika Y
相关产品推荐
相关产品推荐

