无法从Chrome中的http源(wildfly服务器)加载swf文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从Chrome中的http源(wildfly服务器)加载swf文件?相关的知识,希望对你有一定的参考价值。

无法从Chrome加载swf文件(http://my_server:8080/service/com.mypackage/my_file.swf)。当它位于硬盘驱动器上时,它可以从Chrome加载完全相同的文件。我使用的是Flash 32.0.0.171和Chrome版本51.0.2704.84(64位)。 IE等其他浏览器也存在类似问题。当我使用F12调试问题时没有错误并且没有使用crossdomain,只有swf文件正在使用GET请求进行检索。

此swf文件由编译器版本Adobe AIR 3.7 SDK生成。我出于某种原因无法安装最新的SDK。

  1. 如果我在Chrome中输入http://my_server:8080/service/com.mypackage/my_file.swf,则会自动下载。如果我输入此链接https://security.stackexchange.com/questions/154182/why-is-google-chrome-blocking-raw-swf-playback的swf文件(CDdemo.swf),它将被正确加载到同一浏览器上,并且flash正确播放CDdemo.swf。我尝试使用与上一个链接的html示例中相同的对象代码,但没有显示任何内容。
  2. 如果我使用一个html文件,它使用位于硬盘上的swf flash可以读取它并正确加载闪存。此代码有效:
<object name="play" type="application/x-shockwave-flash" data="C:/tmp/my_file.swf"
  1. 我使用了相对路径com.mypackage / my_file.swf而不是http://my_server:8080/service/com.mypackage/my_file.swf。 Chrome为日志提供日志,通知请求已成功(200)。但是Flash仍然无法读取该文件。
  2. 我试图使用以下代码,但也没有显示任何内容:
<object width="800" height="600" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0">

    <embed src="http://my_server:8080/service/com.mypackage/my_file.swf" quality="high"type="application/x-shockwave-flash" width="800" height="600" />
</object>
  1. 我还使用flashplayer_32_sa_debug.exe来调试swf文件。当我在我的本地硬盘上使用swf文件时,它可以工作,但是当我使用url http://my_server:8080/service/com.mypackage/my_file.swf时,它崩溃了没有错误。我想这是一个身份验证问题。通常我在my_server上进行身份验证,然后尝试加载swf文件。
  2. 如果我使用另一个swf文件,我也没有显示任何内容。我强烈怀疑我的Wildfly服务器上有阻塞。我可以使用jetty服务器在同一个Chrome上加载此SWF文件。在我看来,这是Wildfly特有的问题。

这也是用于工作的原始代码,但现在不会显示在Chrome浏览器上:

<body>
<object name="play" type="application/x-shockwave-flash" data="http://my_server:8080/service/com.mypackage/my_file.swf" 
id="play" style="margin:0 10px;width:1000;height:1000;" allowScriptAccess="always">

<param name="wmode" value="transparent" />
<param name="flashvars" value="myvalue=blah" />
<param name="quality" value="high" />
<param name="menu" value="false" />
<param name="allowscriptaccess" value="always" />
 <param name="autoplay" value="true" />



</object>
</body>

在Wildfly服务器访问日志中,我有这个INFO日志:

INFO [io.undertow.accesslog](默认任务-12)167.22.22.22 - 0a658140-8ad8-4347-910b-796e651a12cf [27 / Apr / 2019:12:32:45 +0000]“GET /my_service/my_file.swf HTTP / 1.1“200 116887” - “”Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)

我希望播放swf文件并显示内容。它应该是“正在加载...”。没有显示任何内容,只显示有关使用GET请求正确下载的swf文件的日志(200 OK)。

答案

修复是在web.wml配置中允许swf扩展为flash mime类型。 Wildfly服务器上的过滤器“x-content-type-options”阻止了swf文件

<filter-ref name="x-content-type-options"/>

由于这个swf文件正确加载了一个jetty服务器,我不得不认为它是我的Wildfly服务器的罪魁祸首。

以上是关于无法从Chrome中的http源(wildfly服务器)加载swf文件?的主要内容,如果未能解决你的问题,请参考以下文章

在 Wildfly 的战争部署期间无法访问 jar 中的类

如何将 JS 源映射添加到 Chrome 开发工具中?

无法从 WildFly 连接到 HBase

无法从 Wildfly 连接到 SQL Server 数据库

无法将 JSF + CDI 项目从 Tomcat 迁移到 Wildfly

从 Wildfly 服务器使用 HTTP 访问文件