我们的产品包括由SWFObject加载的Flash应用程序。对于一个客户,当通过HTTPS(但不是HTTP)访问此SWF时,Flash Player将不会加载它。
我让客户直接转到SWF文件的URL(而不是包装页面):
所以,我有几件事我想弄清楚:
如何确定服务器正在发送Content-Disposition标头(而不是IE7的奇怪工件)?用户只能使用IE7,不能使用Firefox,Chrome等.IE7不包含IE9开发者工具中提供的方便的“网络”标签。
假设标题存在,它是如何到达那里的?它们正在运行Tomcat 6.SWF由Tomcat的默认servlet提供服务。如果使用HTTPS连接器,则标题似乎存在,但如果使用HTTP连接器则不显示。除启用HTTPS连接器外,Tomcat配置是库存。
在旁注中,我不相信Flash的缓存清除。在IE9下的我的机器上,即使在我明确清除浏览器缓存和Flash Player的存储数据之后,SWF通常也会被缓存满足:我在Fiddler或Tomcat的访问日志中没有看到任何请求,但是SWF加载了浏览器。我在这里错过了什么吗?客户是否可以访问SWF的一些虚假缓存版本?
编辑:显然,开发人员工具中的'clear cache'命令不会真正清除缓存。使用标准方法产生了预期的结果。
编辑2:在Tomcat中进行跟踪表示未设置Content-Disposition标头。我不确定它是否被浏览器接收,但AFAIK浏览器直接连接到Tomcat。这似乎是一种奇怪的浏览器行为。
答案 0 :(得分:2)
问题与响应中存在以下标题有关:
Cache-Control: no-cache
Pragma: no-cache
这些是由Tomcat发送的,因为该页面受到安全约束(在conf / web.xml中配置)的保护。这些标题导致IE7的行为就像存在“Content-Disposition: attachment
”标题一样。
我的解决方案是让客户将以下配置添加到Tomcat的conf / context.xml中:
<Valve className="org.apache.catalina.authenticator.BasicAuthenticator" securePagesWithPragma="false" />
这会将标题替换为:
Cache-Control: private
...在解决IE问题的同时,仍应实现阻止代理缓存页面的目标。这是基于此处找到的解决方案:
http://daveharris.wordpress.com/2007/07/09/how-to-configure-cache-control-in-tomcat/
然而,这种非常类似的解决方案完全抑制了标题。这些属性的详细信息可以在Tomcat文档中找到:
http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Basic_Authenticator_Valve/Attributes
答案 1 :(得分:1)
您应该能够在加密前记录服务器端的传出HTTP响应,使用null cypher,或者为wireshark提供RSA密钥,并查看数据包捕获的标头。