skip to main |skip to sidebar

2008-03-20

[Flash Player]2008年4月的 Flash Player 的安全策略的变化

在 Adobe 上公布了将在4月份改变 FLash Player 9 的安全策略。(Preparing for the Flash Player 9 April 2008 Security Update

这次的改变纯粹是为了安全,没有增加任何的新特性。但是默认的策略发生了一些改变,有可能会导致现有的一些程序无法正确地工作。

javascript 协议的改变

在以前,loadMovie() 里可以使用 javascript:... 的形式,但新的版本里只在 getURL()navigateToURL()ExternalInterface 里支持 JavaScript。

allowScriptAcces的变化

allowScriptAccess 是指定从 swf 访问 HTML 里的 Script 的方式的属性。以前的 Flash player 对于版本7以下的 swf 的 allowScriptAccess 属性的默认值为 always,版本8以上的默认值为 sameDomain

但新的版本对所有的版本的 swf 的默认值都将变为 sameDomain。版本7以下的 swf 必须明确地指定 allowScriptAccess = always

传送 HTTP Header 时的变化

使用 XML.addRequestHeader()LoadVars.addRequestHeader()URLRequest.requestHeaders 可以添加 HTTP 请求的 Header。在新的版本里向非同域名的服务器发送请求并添加 Header 时先必须要取得服务器的的许可。

具体的是需要在服务器上的 crossdomain.xml 添加添加以下项目:

<allow-http-request-headers-from domain="www.example.com" headers="HeaderName"/>

Socket 连接服务器时必须使用安全策略文件

XMLSocket 与 Socket 连接服务器的安全策略将会更严。新的版本在连接同域名时也需要使用安全策略文件,并且请求安全策略文件的端口固定为843。

2008-03-16

[AS3] ActionScript 3 的代码规范

Adobe 推出了AS3 的代码的书写规范。详情参见:Coding Conventions

它推出的代码规范并不意味着开发者必须严格地遵行,仅仅是建议罢了(开发 Flex SDK 的除外)

以下为我推荐的一些内容:

数组的声明格式

var a:Array /* of String */ = [];
var a:Array /* of int */ = [ 1, 2, 3 ];
function f(a:Array /* of Number */):Array /* of Object */  {
  //...
}

不要写成

var a:Array = [];
var a:Array = new Array();
var a:Array = new Array(1, 2, 3);
function f(a:Array):Array {
  //...
|

Object 的声明格式

var o:Object = {};
var o:Object = { a: 1, b: 2, c: 3 };

不要写成

var o:Object = new Object();
var o:Object = new Object();
o.a = 1;
o.b = 2;
o.c = 3

比较

if (n == 3) // "如果 n 是 3"

不要写成

if (3 == n) // "如果 3 是 n"