包含 SWF 的本地 HTML 无法连接到 Internet
Posted
技术标签:
【中文标题】包含 SWF 的本地 HTML 无法连接到 Internet【英文标题】:Local HTML containing SWF can't connect to the Internet 【发布时间】:2019-11-13 14:44:23 【问题描述】:我的 Flash 项目通过我网站上的 php 页面从 Internet 下载数据。它在以下环境中可以正常工作,但是当我尝试使用包含 SWF 的本地 html 文件对其进行测试时,它将无法正常工作。
我的 SWF 可以在以下位置连接到 Internet:
Adobe Animate Test (Ctrl+Enter)
Adobe Animate Debug (Ctrl+Shift+Enter)
Standalone Flash Player
On my website in HTML (www.myWebsite.com/myFlash.html)
我的 SWF 无法连接到互联网:
local HTML file containing the SWF (C:\test\myFlash.html)
是否可以使用带有嵌入式 SWF 的本地 HTML 连接到 Internet?我一直在尝试让它在 Chrome、MS Edge 和 IE11 中运行,但没有成功。
这是我的 HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body style="background-color:#f0f5f8">
<object data="Main.swf" style="border:1px solid black; margin-left: auto; margin-right:auto; display:block">
<param name="movie" value="Main.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
<param name="play" value="true" />
<param name="loop" value="false" />
<param name="wmode" value="direct" />
<param name="scale" value="showall" />
<param name="menu" value="false" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="always" />
<param name="allowFullScreenInteractive" value="true" />
</object>
</body>
</html>
编辑:我让我的 SWF 输出错误消息,现在当我尝试在本地 HTML 中播放它时,TextField 显示“securityError - Error #2048”。这似乎是关于在网站上有一个 crossdomain.xml,我在 www.myWebsite.com/crossdomain.xml 上确实有:
<?xml version="1.0" ?>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*" />
</cross-domain-policy>
【问题讨论】:
转到相关设置页面,将您保存 HTML + SWF 的文件夹添加为受信任位置:macromedia.com/support/documentation/en/flashplayer/help/… (1) 您的Stand-Alone Flash Player
是否也是PPAPI 版本(Chrome 和Edge 使用的)? Download the SA Player 此处(获取适用于您的操作系统的 Chromium/Opera
调试器版本)。如果是,那么它应该可以工作。 (2) 您的.html
是否用于在与swf 文件本身相同的位置/文件夹中显示.swf
? (3) 我会认为 “危险:本地文件在此处与 Internet 通信” 安全问题是问题所在,但你说相同的 swf 在相同的本地工作正常使用 SA 版本时的文件夹。稍后将对此进行测试...
谢谢,但我已经使用了 Macromedia 页面并添加了受信任的位置。为了避免 Adobe Animate 调试器中的沙盒安全违规,我必须这样做。当我尝试在 Chrome 中打开本地 HTML 时,我没有收到来自浏览器的任何错误消息,尽管我可能需要让我的 SWF 输出一些错误消息以查看发生了什么。至于独立的 Flash Player,我使用的是该页面中的 flashplayer_32_sa.exe,效果很好。但这不会影响 Chrome 播放 Flash 的方式,不是吗?
【参考方案1】:
我想通了。我不得不在我的 crossdomain.xml 中更改这一行:
<allow-access-from domain="*"/>
到这里:
<allow-access-from domain="*" secure="false"/>
我的站点实际上是https://www.myWebsite.com/,这意味着我需要secure="false" 以便非https 站点可以访问它。
【讨论】:
以上是关于包含 SWF 的本地 HTML 无法连接到 Internet的主要内容,如果未能解决你的问题,请参考以下文章
无法连接到本地 Node.js 安全 WebSocketServer