安全引用Flash视频,allownetworking=”internal” 参数的应用

今天在天涯来吧瞅搞笑视频,是优酷的,发现暂停后点视频框框并没有进入到优酷的视频页面!点右下角的“优酷LOGO”,也是没有一点反应!!

翻开看看Flash网页嵌入代码:

<object height=”400″ width=”480″><param name=”movie” value=”{1}”><param name=”wmode” value=”transparent”><param name=”AllowNetworking” value=”internal”><param name=”AllScriptAccess” value=”none”><embed src=”{1}” wmode=”transparent” allownetworking=”internal” allowscriptaccess=”none” type=”application/x-shockwave-flash” height=”400″ width=”480″></object>

类似这样子的(上边这是在DZ里用的带参数的格式!)。

于是我把论坛里编辑器的Flash调用代码也替换啦。

看看这两个关键参数的说明

allowNetworking 参数
allowNetworking 的可能的值为:

“all”(默认值)— 在 SWF 中允许所有的网络 API。

“internal”— SWF 文件可能不调用浏览器导航或浏览器交互 API(在本节后面部分中列出),但是它会调用任何其它网络 API。

“none”— SWF 文件可能不调用浏览器导航或浏览器交互 API(在本节后面部分中列出),并且它无法使用任何 SWF 到 SWF 通信 API(也在本节后面部分中列出)。

allowNetworking 参数主要在 SWF 文件及所在的 HTML 页来自不同的域时使用。当要加载的 SWF 文件与其所在的 HTML 页来自同一个域时,不建议使用 “internal” 或 “none” 值,原因是您不能保证始终同时加载 SWF 文件和想要的 HTML 页。不受信任方可以从您的域中加载未包含在 HTML 中的 SWF 文件,这种情况下,allowNetworking 限制不会按预期发挥作用。

PS:当取值为“none”的时候是播放不了被引用的优酷视频的。

AllowScriptAccess 参数
AllowScriptAccess 参数可以有 “always”、”sameDomain” 和 “never” 这三个可能值中的一个。

当 AllowScriptAccess 为 “always” 时,SWF 文件可以与其嵌入到的 HTML 页进行通信,即使该 SWF 文件来自不同于 HTML 页的域也可以。

当 AllowScriptAccess 为 “sameDomain” 时,仅当 SWF 文件与其嵌入到的 HTML 页来自相同的域时,该 SWF 文件才能与该 HTML 页进行通信。此值是 AllowScriptAccess 的默认值。使用此设置,或者不设置 AllowScriptAccess 的值,可以防止一个域中的 SWF 文件访问另一个域的 HTML 页内的脚本。

当 AllowScriptAccess 为 “never” 时,SWF 文件将无法与任何 HTML 页进行通信。在 Adobe Flash CS4 Professional 中,不建议使用该值。如果没有在自己的域中提供不受信任的 SWF 文件,则不建议也不应使用该值。如果确实需要使用不受信任的 SWF 文件,则 Adobe 建议您创建一个不同的子域,并将所有不受信任的内容置于其中。

AllowScriptAccess 参数主要作用于不在本地运行的 SWF 文件,可以决定API(可实现外出脚本访问和外出 URL 访问)与嵌入这些 API 的网页通信。

allowNetworking 与 AllowScriptAccess
AllowScriptAccess 侧重 SWF 与嵌入网页的通信 完成和网页的交互(传递参数请求等),也就是allowScriptAccess 参数控制 SWF 是否可以调用 HTML 页中的 JavaScript。(这个对于版本 8 及其以上的 SWF 有效,不影响版本 7 或更低版本的 SWF。)

allowNetworking 侧重 SWF 是否能够访问网络完成自身完整内容(元件或其他 SWF )的加载。

这里注意到 AllowScriptAccess 的取值为 “none” ,这个很迷糊,Google好多遍也没有找到更多的说明材料。

从这个字面意思看, AllowScriptAccess =”none” 表示没有设置,也就是和 AllowScriptAccess = “sameDomain” 雷同。至于为什么不用

Access file system and network

This level is the highest level of permission. A local SWF file that has these permissions is a trusted local SWF file. Trusted local SWF files can read from other local SWF files, interact with any server, and write ActionScript for other SWF files or HTML files that have not explicitly forbidden the file permission (for example, with allowScriptAccess=”none”). This level of permission can be granted by the user or Flash developer in the following ways:

* Using the Global Security Settings panel in the Settings Manager.
* Using a global configuration file.

A configuration file can be installed with the SWF file, created by a Flash developer, or added by an administrator (for all users or the current user) or any Flash developer (for the current user).

若发现理解的不正确的地方还望指正出来。。

参考文档:
flash.system包

限制网络 API

控制外出 URL 访问

Flash Player 8 中的安全性更改

Publishing files for local deployment

2 thoughts on “安全引用Flash视频,allownetworking=”internal” 参数的应用

  1. Pingback: 安全引用Flash视频之allowNetworking=”internal” 参数和allowScriptAccess=”never” « ImYYK.com

  2. Pingback: Discuz 7.1中安全引用 Flash 视频,解决引用视频跳转问题 | Lin's Space|Only

Leave a Reply

Your email address will not be published. Required fields are marked *