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

Cannot load swf file from http source(wildfly server) in Chrome?

无法从 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,它会自动下载。如果我输入这个link的swf文件(CDdemo.swf) https://security.stackexchange.com/questions/154182/why-is-google-chrome-blocking-raw-swf-playback,它在同一浏览器上正确加载并且 flash 正确播放 CDdemo.swf。我尝试使用与前面 link 的 html 示例中相同的目标代码,但没有显示任何内容。

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

<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 给出日志,通知此 swf 的获取请求成功 (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 服务器出现了阻塞。我可以使用码头服务器在同一个 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 [io.undertow.accesslog] (default task-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, like Gecko)

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

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

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

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

还有