麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 辦公 > Flash > 正文

flash as3.0 跨域的解決辦法

2020-07-17 13:13:22
字體:
來源:轉載
供稿:網友
    Flash跨域問題相信不是所有人都可以遇到,如果你在本地發布,或者說直接Ctrl+Enter在FlashIDE中預覽,是不會遇到跨域問題的,當然,跨域有個前提,那就是Flash不是完全獨立的,與外界要做一些通信和交互,如果你的Flash是完全獨立的文件,沒有和外界發生任何交互和數據通信的話,那么你可以不考慮跨域問題,因為這也不存在跨域問題。什么是跨域?    跨域簡單的說就是訪問其他域名的文件或資源,比如a.com的Flash去訪問b.com的資源,那么就會引起跨域的問題,因為a.com和b.com不是同一個域名。為什么有跨域問題?    其實不僅僅是Flash,Javascript等一些腳本也有跨域的問題,這個主要是自身的安全機制所決定的,因為跨域訪問一些文件或資源有一定的危險性,他超過了網站自身的范圍,對于站外的資源無法審核其安全性,在網絡病毒木馬日益猖獗的今天,跨域限制訪問是其安全策略的一個重要解決手段。跨域有什么問題?    跨域的問題有很多,最直接的就是所訪問的文件被限制了,這樣一來,你的Flash就不能正常工作了,所以是讓人很頭疼的一件事情。現在的Flash已經不僅僅是作為一個動畫了,更多的有了數據交互,所以和外界的通信來作為一個互動性比較強的媒介來展現,跨域也是其中必須解決的一個問題。恩,那也許有人說了,既然有跨域的問題,那我把資源都放在同一個域名下不就可以了?恩,的確可以這樣做,但是有時候我們也會遇到訪問外部資源的情況,而且在一個比較正規的項目中,Flash和Html往往是分開放的,很多公司也是這樣,為了便于維護和管理,所以跨域的問題就容易出現。1、Flash自身的安全機制設置:     Flash中,在IDE運行是沒有任何安全限制的,但是發布出去的話,就會有不少限制,Flash有2中發布方式,一個是僅訪問網絡,一個是僅訪問本地,大家可以在文件-發布設置-Flash選項卡中看到,注意必須是在Flash文件有效時才會有哦,如果當前編輯的是as文件是木有這個選擇菜單的:     這里就已經限制了Flash的安全級別,如果是只訪問本地,那么Flash中所有的對Web的訪問都將禁止,而只訪問網絡的話,對本地的文件訪問都將禁止,所以大家根據實際的用途來選擇,如果你希望你的Flash放到Web上,那么就選擇只訪問網絡,這樣的話你測試就務必放在WebService中測試了,本地運行就會出現各種問題(如果有數據通信的話),例如:測試URLhttp://127.0.0.1/123.swf。2、ActionScript代碼設置:    AS2寫法:
復制代碼
代碼如下:
System.security.allowDomain("*");//針對不同http資源System.security.allowInsecureDomain("*");//針對需要安全驗證的資源,比如https
    AS3寫法:
復制代碼
代碼如下:
flash.system.Security.allowDomain("*");flash.system.Security.allowInsecureDomain("*");
    上面就是嚴格的寫法,AS3還好說,大家要注意一下AS2,AS2是木有flash.system這個包的,但是你import flash.system并不會報錯,所以如果你把AS3的代碼復制進去運行雖然一切正常,但是實際是木有任何效果的。一定要注意!上面的代碼就是說允許Flash去訪問任何URL資源,如果只想訪問特定的URl,就把*改成該URL即可,如果多個URl,就用逗號分隔就可以了,注意allowInsecureDomain是允許訪問帶驗證的URL資源,比如https打頭的,如果你訪問的只是普通http的話就不需要了。3、html的設置:
    如果你需要和頁面的JS通信,那么html里就必須有這樣一個參數:
復制代碼
代碼如下:
<param name="allowScriptAccess" value="always" />
    參數always表示始終允許腳本訪問,如果是never,就表示始終不允許。4、加載外部資源:    如果你要讀取一個外部文件,比如swf,picture,mp3等等,那么就需要一個跨域策略文件(crossdomain.xml),這個其實就是一個xml文件,具體內容是:
復制代碼
代碼如下:
<?xml version="1.0"?><cross-domain-policy> <allow-access-from domain="www.explorechn.com" /> <allow-access-from domain="explorechn.com" /> <allow-access-from domain="223.4.119.191" /></cross-domain-policy>
    這就是跨域策略文件,allow-access-from domain表示允許訪問的URl,如果有多個依次添加,如果允許所有就一個 allow-access-from domain = "*"就可以了。需要說明一下這個文件該怎么用,如果你的Flash在a.com下,你需要訪問b.com的資源,那么把這個xml放在b.com的根目錄就可以自動訪問了,當然,你也可以訪問其他目錄的策略文件。
復制代碼
代碼如下:
flash.system.Security.loadPolicyFile(URL:String);
    通過這個loadPolicyFile就可以主動去加載一個安全策略文件了,注意上面是AS3的寫法,AS2不一樣哦,參考上面的寫法。5、各個瀏覽器的跨域問題:    IE就不說了,這個基本沒啥問題,包括Flash自己生成的Html就對IE的支持做的很好,這里就說說Chrome和FF的問題:對于FLash,IE是認object標簽的,但是FF和Chrome是認embed標簽的,所以這個很重要,如果在調試的時候,發現firebug等工具提示"...... is not a Function",我們就要從以下地方查找原因:    1、addCallback是否成功注冊    2、allowScriptAccess是否允許always,默認不允許    3、Flash是否完全加載完畢    一般來說,第三點是我們最容易遇到的,如果你的Flash沒有加載完畢就去調用函數的話,是找不到這個函數的。    這里需要注意另外一個錯誤提示,就是"Error calling method on NPObject",如果出現這個錯誤,就要小心了:    1、安全策略問題,請參考上面所有的解決方案    2、自身函數錯誤
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 激情视频免费看 | 国产成人在线视频播放 | 欧美成人se01短视频在线看 | chinese军人gay呻吟 | 欧美日韩在线播放 | 超碰97最新 | 国产精品91在线 | 91麻豆精品国产91久久久无需广告 | 草逼一区 | 日韩在线欧美在线 | 69性欧美高清影院 | 久久草草影视免费网 | 国av在线| 久久网站热最新地址 | 免费亚洲视频在线观看 | 免费男女乱淫真视频 | 激情在线视频 | 欧美中文字幕一区二区三区亚洲 | 国产精品啪一品二区三区粉嫩 | 在线成人精品视频 | 日韩理论电影网 | 爱福利视频网 | 日韩毛片免费观看 | 免费一级高清毛片 | 天海翼四虎精品正在播放 | 国色天香综合网 | 中文字幕亚洲欧美 | 中国videos露脸hd | 在线成人影视 | 国产一区二区三区四区五区精品 | 一区二区三区欧美日韩 | 在线观看一区二区三区四区 | 美女网站色免费 | 国产精品久久久久久久久久电影 | 91精品国产综合久久久欧美 | 草草久久久| 午夜视频在线在免费 | 国产成人精品免费视频大全办公室 | 91一级毛片 | 精品国产91久久久久久 | 毛片大全 |