[AS3]html中allowNetworking与AllowScriptAccess处理SWF对网络数
有同事说某个Flash的插件,放到Qzone,新浪等网站,Flash里的链接点击都不生效了,打开一看,果然。
然后用FireFox打开,点击链接,FlashPlayer报错:
SecurityError: Error #2146: 安全沙箱冲突:http://xxx/xxx.swf 不能调用 navigateToURL,因为 HTML/容器参数 allowNetworking 具有值 internal。
at global/flash.net::navigateToURL()
然后查查allowNetworking是何方神圣,官网解释:
This HTML parameter governs a number of ActionScript APIs. It has the following possible values:
"all"—the default. No networking restrictions; player behaves normally.
"internal"—SWF files may not call browser navigation or browser interaction APIs, but may call any other networking APIs.
"none"—SWF files may not call any networking APIs, nor any SWF-to-SWF communication APIs.
allowNetworking
参数:
- "all"(默认值)― SWF 文件中允许使用所有网络 API。
- "internal"― SWF 文件可能不调用浏览器导航或浏览器交互 API,但是它会调用任何其它网络 API。
- "none"― SWF 文件可能不调用浏览器导航或浏览器交互 API,并且它无法使用任何 SWF 到 SWF 通信 API。
可以控制 SWF 文件对网络功能的访问。调用被禁止的 API 会引发 SecurityError 异常。
当 allowNetworking 设置为 "internal" 时,以下 API 被禁止:
- navigateToURL()
- fscommand()
- ExternalInterface.call()
当 allowNetworking 设置为 "none" 时,除了上面列出的那些 API 外,还会禁止以下 API:
- sendToURL()
- FileReference.download()
- FileReference.upload()
- Loader.load()
- LocalConnection.connect()
- LocalConnection.send()
- NetConnection.connect()
- NetStream.play()
- Security.loadPolicyFile()
- SharedObject.getLocal()
- SharedObject.getRemote()
- Socket.connect()
扩展阅读
AllowScriptAccess
参数:
- sameDomain:仅当 SWF 文件和网页位于同一域中时才允许执行外出脚本访问。这是 AVM2 内容的默认值。
- never:外出脚本访问将始终失败。
- always:外出脚本访问将始终成功。
AllowScriptAccess 参数可以防止从一个域中承载的 SWF 文件访问来自另一个域的 HTML 页面中的脚本。
对从另一个域承载的所有 SWF 文件使用 AllowScriptAccess="never" 可以确保位于 HTML 页面中的脚本的安全性。
allowFullScreen
参数:
- 启用全屏模式设置为"true",否则设置为"false"(默认值)
- 仅当在响应鼠标事件或键盘事件时才会调用启动全屏模式的 ActionScript。如果在其它情况中调用,Flash Player 会引发异常。
- 在全屏模式下,用户无法在文本输入字段中输入文本。所有键盘输入和键盘相关的 ActionScript 在全屏模式下均会被禁用,但将应用程序返回标准模式的键盘快捷键(例如按 Esc)除外。
- 当内容进入全屏模式时,程序会显示一条消息,指导用户如何退出和返回标准模式。该消息将显示几秒钟,然后淡出。
- 如果某个调用方与 Stage 所有者(主 SWF 文件)没有位于同一安全沙箱,则调用 Stage 对象的 displayState 属性会引发异常。
- 管理员可以通过在 mms.cfg 文件中设置 FullScreenDisable = 1 对浏览器中运行的 SWF 文件禁用全屏模式。
- 在浏览器中,必须在 HTML 页面中包含 SWF 文件,才能进入全屏模式。
- 在独立的播放器或放映文件中始终允许全屏模式。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例