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



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

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

  1. 如果我在Chrome中输入http://my_server:8080/service/com.mypackage/my_file.swf,它会自动下载。如果我输入此链接的 swf 文件(CDdemo.swf) https://security.stackexchange.com/questions/154182/why-is-google-chrome-blocking-raw-swf-playback,它在同一浏览器上正确加载,并且 Flash 正确播放 CDdemo.swf。我尝试使用与上一个链接的 html 示例中相同的目标代码,但没有显示任何内容。

  2. 如果我使用使用位于硬盘闪存上的 swf 的 html 文件可以读取它并正确加载闪存。此代码工作:

<object name="play" type="application/x-shockwave-flash" data="C:/tmp/my_file.swf"
    我使用了相对路径com.mypackage/my_file.swf而不是http://
  1. my_server:8080/service/com.mypackage/my_file.swf。Chrome 给出日志,通知此 swf 的 get 请求成功 (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 文件。当我在本地hardisk上使用swf文件时,它可以工作,但是当我使用网址http://my_server:8080/service/com.mypackage/my_file.swf时,它崩溃了,没有错误。我想在这种情况下这是一个身份验证问题。通常,我在my_server上进行身份验证,然后尝试加载 swf 文件。

  2. 如果我使用另一个 swf 文件,我也没有显示任何内容。 我强烈怀疑我的野蝇服务器上有阻塞。我可以在带有码头服务器的同一Chrome上加载此SWF文件。在我看来,这是一个野蝇特有的问题。

这也是曾经工作但现在无法显示在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>

在野蝇服务器访问日志上,我有以下信息日志:

信息 [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;赢64;x64) AppleWebKit/537.36 (KHTML, like Gecko)

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

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

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

由于这个swf文件是用码头服务器正确加载的,我不得不假设是我的Wildfly服务器是罪魁祸首。

最新更新