分享Flash處理安全策略的經(jīng)驗(yàn)_Flash教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:Flash入門(mén)實(shí)例:制作傳統(tǒng)風(fēng)格卷簾動(dòng)畫(huà)本例為Flash鼠繪新手入門(mén)系列課程,今天我們來(lái)學(xué)習(xí)傳統(tǒng)風(fēng)格卷簾畫(huà)的繪制,教程講解的比較詳細(xì),適合Flash初學(xué)者學(xué)習(xí),希望朋友們喜歡。 做了個(gè)簾畫(huà),我把做的過(guò)程寫(xiě)出來(lái),供初學(xué)FLASHR 朋友們交流練習(xí)。 先看下效果吧: 一、畫(huà)簾片: 1.新建一圖形元件,名“
很多人在處理安全策略時(shí)遇到問(wèn)題,我自己也總結(jié)了一些經(jīng)驗(yàn),供大家參考吧.在 Flash Player 9.0.124.0 及以后的版本中,socket策略文件對(duì)于任何 Socket 連接都是必需的。也就是說(shuō),無(wú)論連接到哪一個(gè)端口(即使連接到提供 SWF 文件的同一主機(jī)上的端口),目標(biāo)主機(jī)上都需要套接字策略文件。連接步驟:0.不論是低于還是高于1024端口,基于文件系統(tǒng)時(shí)都不會(huì)請(qǐng)求策略文件,基于網(wǎng)絡(luò)時(shí)才會(huì)請(qǐng)求.
1.首先發(fā)出以null結(jié)尾的<policy-file-request/>的消息,檢查服務(wù)器843端口是否有安全策略文件,策略文件格式為:
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80-9000" />
</cross-domain-policy>
發(fā)回策略文件的時(shí)候必要以0結(jié)尾,如果843端口在3秒內(nèi)沒(méi)有請(qǐng)求到策略文件或者to-ports配置的端口不允許鏈接,則斷掉鏈接拋securityError,這個(gè)是flash主動(dòng)發(fā)起的.
2. 如果您的客戶(hù)端socket或xmlsocket連接中設(shè)置了Security.loadPolicyFile("xmlsocket://服務(wù)地址:應(yīng)用端口"),則連接您的應(yīng)用目標(biāo)端口請(qǐng)求安全策略文件,請(qǐng)求和響應(yīng)的方式如上,不設(shè)置是不會(huì)請(qǐng)求的.發(fā)請(qǐng)求是在調(diào)用connect之前.
3.如果您是http請(qǐng)求方式要設(shè)置Security.loadPolicyFile("http://服務(wù)地址/crossdomain.xml"),crossdomain.xml文件內(nèi)容如上,放在網(wǎng)站根目錄就行了.例如mop的http://www.mop.com/crossdomain.xml
解決方案1:使用adobe官方提供的文件直接在服務(wù)器的843端口上建立服務(wù),這樣響應(yīng)速度最快,但對(duì)于應(yīng)用的部署就麻煩了http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html
解決方案2:客戶(hù)端必須加Security.loadPolicyFile("xmlsocket://服務(wù)地址:應(yīng)用端口"),在服務(wù)端的應(yīng)用端口上的私有協(xié)議上處理,一般的協(xié)議是長(zhǎng)度 類(lèi)型 數(shù)據(jù),這樣判斷長(zhǎng)度是0x3C70類(lèi)型0x6C69,單獨(dú)處理這個(gè)消息,但對(duì)自己的私有協(xié)議處理還是有影響。
為什么是這樣的長(zhǎng)度和類(lèi)型看圖:

解決方案3:單獨(dú)在服務(wù)應(yīng)用上處理843端口,和其他應(yīng)用的服務(wù)剝離出來(lái):
- //安全策略服務(wù)
- public void startPolicyServer() throws IOException{
- IoAcceptor acceptor = new NioSocketAcceptor();
- acceptor.setHandler(new PolicyServerHandler());
- acceptor.bind( new InetSocketAddress(843));
- System.out.println("安全策略服務(wù)偵聽(tīng)端口:843");
- }
- //其他應(yīng)用服務(wù)
- ..................
- ..................
- //單獨(dú)的安全策略處理器
- public class PolicyServerHandler extends IoHandlerAdapter {
- // 22字節(jié) 0占1個(gè)字節(jié)
- String security_quest = "<POLICY-FILE-REQUEST />";
- // 最后以0結(jié)尾
- String policyStr = "<CROSS-DOMAIN-POLICY>\r\n<ALLOW-ACCESS-FROM to-ports='\"80-9000\"' domain='\"*\"' />\r\n </CROSS-DOMAIN-POLICY>\r\n\0";
- private final Logger log = Logger.getLogger(PolicyServerHandler.class.getName());
- public void messageReceived(IoSession session, Object message)
- throws Exception {
- IoBuffer processBuf = (IoBuffer) session.getAttribute("processBuf");
- processBuf.put((IoBuffer)message);
- processBuf.flip();
- if(getRequest(processBuf)){
- byte[] reps = policyStr.getBytes("UTF-8");
- IoBuffer rb = IoBuffer.allocate(reps.length);
- rb.put(reps);//也有putString方法
- rb.flip();
- session.write(rb);//發(fā)回
- log.info("send Policy");
- }
- }
- //獲得安全請(qǐng)求的字符串
- private Boolean getRequest(IoBuffer buf){
- String req = new String(buf.array());
- if (req.indexOf(security_quest) != -1){
- return true;
- }
- return false;
- }
- @Override
- public void messageSent(IoSession session, Object message) throws Exception {
- session.close(true);
- }
- @Override
- public void sessionClosed(IoSession session) throws Exception {
- super.sessionClosed(session);
- session.removeAttribute("processBuf");
- }
- @Override
- public void sessionCreated(IoSession session) throws Exception {
- super.sessionCreated(session);
- IoBuffer processBuf = IoBuffer.allocate(64);
- session.setAttribute("processBuf", processBuf);
- }
- }
備注:
1 mina2.x對(duì)比1.x效率更高,拋棄了原有的btyeBuffer,新寫(xiě)了Iobuffer,原因如下:
It doesn't provide useful getters and putters such as fill, get/putString, and get/putAsciiInt() enough.
It is difficult to write variable-length data due to its fixed capacity
2 demux下DemuxingProtocolCodecFactory和MessageDecoder等功能更完善了,decodable判斷是否能解析數(shù)據(jù),decode解析實(shí)際的數(shù)據(jù),在處理私有協(xié)議上更簡(jiǎn)單了
3 Flash10 socket類(lèi)新增加timeout屬性指示建立連接時(shí)需等待的毫秒數(shù)
分享:Flash AS3制作火苗動(dòng)畫(huà)實(shí)例教程這個(gè)例子做了有段時(shí)間了.但是也跟那時(shí)候發(fā)的AS2的純代碼火效果是一樣的,也是殘次品. 本次例子沒(méi)能做到減少系統(tǒng)資源的能力.剛做完這個(gè)效果以后.也查找了一些粒子方面的資料.看到了很多高人寫(xiě)的粒子可以使用上千個(gè)粒子卻不占用更多的系統(tǒng)資源,高人.但是,如果能
相關(guān)Flash教程:
- as中禁用ESC鍵
- AS3.0 圖片變黑白 圖片彩色變黑白代碼
- flash as3.0 跨域的解決辦法
- 模板無(wú)憂(yōu)FLASH透明代碼
- Flash教你制作卡通MM眨眼睛動(dòng)畫(huà)
- Flash從零開(kāi)始學(xué)習(xí)創(chuàng)建單選按鈕
- Flash繪制小龍與花插畫(huà)場(chǎng)景
- Flash程序的測(cè)試方法
- Flash CS4文字顏色緩動(dòng)特效
- 網(wǎng)頁(yè)中演示類(lèi)FLASH動(dòng)畫(huà)制作規(guī)范
- Flash CS3循環(huán)背景的運(yùn)用技巧
- Flash鼠繪技巧教你制作紅綠色的樹(shù)葉
Flash教程Rss訂閱網(wǎng)站制作教程搜索
Flash教程推薦
- 為AS2.0添磚加瓦-編寫(xiě)類(lèi)擴(kuò)展(1)
- Flash AS3制作鼠標(biāo)跟隨噴槍涂鴉效果
- 用Flash模擬制作簡(jiǎn)單的3D視覺(jué)特效
- Flash制作超炫彩色線(xiàn)條圖案動(dòng)畫(huà)特效
- 用Flash AS三行代碼隱藏右鍵菜單
- Flash繪畫(huà)技巧:繪制女孩頭像
- 在FLASH中輕松畫(huà)花教程
- 關(guān)于網(wǎng)頁(yè)中Flash彈出網(wǎng)頁(yè)窗口的詳細(xì)講解
- Flash 網(wǎng)頁(yè)新聞浮動(dòng)板的制作(XML應(yīng)用)
- 解決Fla文件編譯SWF后體積過(guò)大
猜你也喜歡看這些
- Flash制作光盤(pán)引導(dǎo)動(dòng)畫(huà)全過(guò)程(前幾節(jié)為靜音)
- 金鷹Flash 8 中文版視頻教程
- 新東方劍橋商務(wù)英語(yǔ)BEC flash教程 初+中+高 (現(xiàn)已穩(wěn)定供源)
- Flash 8完美動(dòng)畫(huà)設(shè)計(jì)與制作
- 呂聰賢flash視頻教程下載
- 《Flash CS3 Professional動(dòng)畫(huà)制作技能進(jìn)化手冊(cè)》--樣章、樣例、教學(xué)視頻
- 金鷹FlashMx 實(shí)例教程
- 新東方王強(qiáng)口語(yǔ)Flash網(wǎng)絡(luò)課程第一、二冊(cè)
- 精通Flash動(dòng)畫(huà)設(shè)計(jì)(附光盤(pán)腳本分鏡頭設(shè)計(jì)與典型案例)》
- Flash.ActionScript3.0從入門(mén)到精通
- 相關(guān)鏈接:
- 教程說(shuō)明:
Flash教程-分享Flash處理安全策略的經(jīng)驗(yàn)
。