2016-10-13 00:16:48 点击量:5 标签: 收藏本文
以前在给游戏加sitelock时,都是使用 loaderInfo.loaderURL 或者 root.loaderInfo.url 的方式来获取swf的url,然后进行判断,虽然可以防止swf在别的域名下运行,但别的域名可以通过在页面中直接引用swf来在页面中进行显示。
使用 ExternalInterface.call 来执行一段js代码,获取swf所在页面的url,如果swf的url和页面的url都处在同一个域,那么 ExternalInterface.call就可以正常获取页面的url,否则会返回空,从而结合之前的方法共同验证就可以保证swf文件既不会在别的 域名下运行,也不会在别的域名下被引用运行。 代码如下:
- private function checkDomain():Boolean
- {
- var url:String = loaderInfo.loaderURL;
- var weburl:String;
- try
- {
- weburl = ExternalInterface.call("function getUrl(){return window.location.href;}");
- }
- catch (e:Error)
- {
- weburl = "";
- }
- // 允许运行的域名列表,使用|分隔
- var allowedDomains:String = ".*cuplayer.com|.*dev.local";
- var allowedPattern:String = "^http(|s)://("+allowedDomains+")/";
- var domainCheck:RegExp = new RegExp(allowedPattern, "i");
- if (weburl != "")
- {
- if (!domainCheck.test(url) && !domainCheck.test(weburl))
- {
- showInfo();
- return false;
- }
- }
- else
- {
- showInfo();
- return false;
- }
- return true;
- }
- private function showInfo():void
- {
- var textWarning:TextField = new TextField();
- textWarning.defaultTextFormat = new TextFormat("Tahoma", 24, 0x333333);
- textWarning.selectable = false;
- textWarning.multiline = true;
- textWarning.autoSize = "center";
- textWarning.x = 300;
- textWarning.y = 100;
- addChild(textWarning);
- textWarning.htmlText = '<p align="center"><br />
<br />Please play this game at
<a target="_blank" href="http://CuPlayer.com">
<font color="#CC0000">CuPlayer.com</font></a>.</p>';- }
然后在preloader中所有动作的前面调用如下代码,即可生效:
- if (!checkDomain())
- return;
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室