为什么我的CSS显示���?

时间:2017-07-07 14:11:45

标签: css apache flask https character-encoding

  

系统详情:
  服务器:Apache,Ubuntu 16.02
  客户端:Windows 10,Chrome

我的apache配置文件如下所示:

<VirtualHost *:80>
       ServerName mycoolsiteA.mydomain.com
       ServerAlias mycoolsiteB.mydomain.com

       Alias /static /var/www/python/mysite/static
       Alias /templates /var/www/python/mysite/templates

       WSGIDaemonProcess my_app user=www-data group=www-data threads=5
       WSGIScriptAlias / /var/www/python/mysite/start.py
       WSGIScriptReloading On

       <Directory /var/www/python/mysite>
               WSGIProcessGroup my_app
               WSGIApplicationGroup %{GLOBAL}
               order deny,allow
               Allow from all
       </Directory>
</VirtualHost>

当我在浏览器中加载css时,它显示以下内容。但是,这很随机。有时&#34;有时&#34;有效,有时没有。

我的示例网址是这样的: https://mycoolsiteA.mydomain.com/static/css/bs/bootstrap.min.css

我们有一个防火墙设备可以自动将http重定向到https,但我直接用https加载css。

结果如下: enter image description here

然而,如果我刷新几次,或者在最后添加一个r =数字,它将清除缓存并加载。但是,它会再次随机执行,直到我再次清除缓存。

这里加载并正常工作:

enter image description here

有任何想法,方向可以解决这个问题吗?

1 个答案:

答案 0 :(得分:8)

欢迎来到UTF-8的有趣世界!

我在PHP中已经看过几十次(参见UTF-8 all the way through)。你所经历的几乎肯定是一个UTF-8文件作为一些其他字符编码提供(反之亦然)。我下载了Bootstrap,Notepad ++将它们标识为ANSI编码。您的Web服务器可能强制使用UTF-8。查看类似这样的回复标题

Content-Type: text/css; charset=UTF-8

所以你的网络服务器说它是UTF-8,但事实并非如此。此时您的浏览器开始呕吐,这意味着它无法识别该字符。

如果是这种情况,有几种方法可以解决这个问题。

  1. 将文件重新编码为UTF-8(Notepad++可以为您执行此操作)
  2. 停止传递默认的UTF-8。您的浏览器将尝试识别编码
  3. 只是为了踢,请尝试loading the CSS directly from the MaxCDN servers

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    

    他们没有传递UTF-8标题