由apache2

时间:2017-04-16 07:56:41

标签: apache angular

我有角度2应用程序与最新的角度cli。 App有html视频播放器,能够播放带英文字幕(vtt)的视频。视频和字幕文件与apache2一起提供,因此来自dist /的角度束。英文字幕工作正常但非英语根本没有出现在视频中。

关键区别在于我访问非en sub。使用chrome a获得正确的编码(预期的字符)。但是当访问(由track标签加载)编码是错误的(一些凌乱的字符。)。

我只注意到req标题的差异:接受,但我怀疑这是原因。

使用Chrome进行直接访问: direct access with chrome direct access with chrome: vtt

按曲目加载 loaded by track loaded by track: vtt

我包含了我的apache配置(最后一行只是尝试编码,很久没有看到apache ......)。

apache2.conf:

...
<IfModule mod_mime.c>
 AddType application/x-javascript .js
 AddType text/css .css
 AddType text/plain .webapp
 AddType text/xml .xml
 AddType application/xml .xml
 AddType application/javascript .js
 AddType application/javascript .json
</IfModule>
<IfModule mod_deflate.c>
 SetOutputFilter DEFLATE
 <IfModule mod_setenvif.c>
  SetEnvIfNoCase Request_URI \.(?:rar|zip)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI \.(?:gif|jpg|png)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI \.(?:avi|mov|mp4)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 </IfModule>
 <IfModule mod_headers.c>
  Header append Vary User-Agent env=!dont-vary
 </IfModule>
</IfModule>

AddDefaultCharset utf-8
<FilesMatch \.vtt$>
 ForceType text/vtt;charset=utf-8
</FilesMatch>
AddType text/vtt .vtt
AddCharset UTF-8 .vtt

apache2 conf sites-enabled / 000-default.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options -Indexes FollowSymLinks
        AllowOverride None
        Header set Access-Control-Allow-Origin "*"
    </Directory>
    <Directory /var/www/>
        Header set Access-Control-Allow-Origin "*"
        Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    <Directory /var/www/hvp/>
        Header set Access-Control-Allow-Origin "*"
        Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
    Redirect permanent / https://myserver/
</VirtualHost>


<VirtualHost *:443>
    ServerAdmin webmaster@localhost

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/myserver/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/myserver/privkey.pem

    <Directory /var/www/hvp/>
        Header set Access-Control-Allow-Origin "*"
        Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>


    ErrorLog ${APACHE_LOG_DIR}/https_error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/https_access.log combined
</VirtualHost>

可能导致此行为的原因是什么? THX。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。

首先,当文件具有.vtt后缀时,chrome会解释它并找到正确的编码。所以比较这两者毫无意义。现在,当潜艇工作时,我查看网络标签,无论如何我看到凌乱的字符,但在播放器中它正在工作。

其次,在时间定义中用点替换逗号有助于在webstorm中编辑和在vlc中检查结果。

所以真正的问题是字幕文件的编码和/或逗号,而不是时间def中的点。