【问题标题】:The Content-Type HTTP header is missing charset attributeContent-Type HTTP 标头缺少字符集属性
【发布时间】:2026-01-10 10:00:01
【问题描述】:

在安全检查期间,报告js和css文件缺少“Content-Type HTTP header is missing charset attribute”。

请查看以下截图:

在我添加字符集之前,我的 HTML 如下所示

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <script type="text/javascript" src="/backend/web/assets/3faf0a44/jquery.js"></script>
    </head>
</html>

然后我在

中添加了 charset="UTF-8"
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <script type="text/javascript" src="/backend/web/assets/3faf0a44/jquery.js" charset="UTF-8"></script>
    </head>
</html>

仍然没有在响应头中添加字符集,请查看下面的截图:

那么我应该怎么做,我的 Content-Type 标头更改为以下:

内容类型:应用程序/javascript;字符集=utf-8

【问题讨论】:

标签: php networking utf-8 yii2 header


【解决方案1】:

让我试着回答一下,你可以通过编辑apache2.conf(对于类似 Debian 的 OS(es))或 httpd.conf(类似 CentOS 的 OS(es))并添加以下行来做到这一点:

#Set the correct Char set so don't need to set it per page.
AddDefaultCharset utf-8
#for css, js, etc.
AddCharset utf-8 .htm .html .js .css

来源:

【讨论】:

    【解决方案2】:

    所以将它添加到 html 不起作用的原因是它不会告诉服务器任何东西,只会告诉浏览器下载后何时解析文件,并且只有当它决定解析元标记时. (主要的)

    但是,如果您想将数据作为 http 标头的一部分发送并使用 php 来提供页面/站点/文件,那么您将触发 header() 命令,即您在其中放置的内容将附加到 http 标头。您可以多次使用此命令来添加新位。但是您必须将所有对该函数的调用放在输出数据的任何内容之前。因为一旦 php 必须输出某些内容,它将编译并在该点连同输出一起发送标头,因此无法对其进行进一步更改。

    所以在文件顶部试试这个

    <?php
     header('charset=UTF-8');
    ?>
    

    我认为那会做你想要的。

    【讨论】: