这个问题我已经在segmentfault上提问了,不过目前还没有满意的回答。
于是发到V2EX大家一起讨论一下吧~
下面是问题描述:
今天给我自己的VPS配置上了SSL证书,于是想把phpMyAdmin的强制SSL打开,可是打开之后发现一个很奇怪的问题,具体描述如下:
首页完全是空白
首页的源代码是有内容的,而且是正确的
Chrome的开发者控制台能看到所有的CSS、JS请求全挂了。(failed) Pending
双击打开这些请求,可以完全正常的看到所有的CSS和JS
从日志可以看出客户端完全没有发起对那些没有加载的CSS和JS的请求。
请问这样的问题该如何解决呢。。。
个人认为与
<style>html{display: none;}</style>
没有直接的关系。因为http下加载了所有的CSS之后,会有新的CSS覆盖着一条,所以可以正常显示。如果在HTTPS下,由于某些CSS无法正常加载,才导致了这一条直接生效,导致页面全白。
应要求贴上httpd的ssl配置。
Listen 443
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
<VirtualHost _default_:443>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /***/ssl.crt
SSLCertificateKeyFile /***/ssl.key
SSLCertificateChainFile /***/gs_intermediate_ca.pem
SSLCACertificateFile /***/ca.pem
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
在 @
HJin.me 的提醒下找到一点头绪,确实是SPDY的问题。如果把SPDY关掉,那就完全正常。但是还木有找到最终的原因。
然后多次试验发现了一个更加奇怪的问题。有的时候我在服务端日志上完全看不到访问记录,说明Chrome的请求完全没有发到服务端。但是有的时候,我能在服务端看到请求到达,并且返回200,可是Chrome依然显示(failed) Pending。但是这时候如果点一下这个请求,会发现右边打开的窗口中显示的HTTP状态码是200!这真是太奇怪了。。。