Flash要求ソースReferテスト
10166 ワード
最近小さなテストをしました:Aドメインにparentがあります.swfは、Bドメインのchildをロードする.swf,Bドメインのchild.swfからのリクエストで、サーバが受信referはAドメインからのparentである.swfは、やはりBドメインからのchildである.swf.
テスト環境:
システム:win 8、
Chrome 24.0.1312.57 m、 > Flash Player 11,6,602,155
Firefox 19.0 > Flash Player 11,6,602,155
IE 10 > Flash Player 11,6,602,167
テスト結果:
要求方法ブラウザ
chrome
firefox
ie
GET
father.swf
father.swf
son.swf
POST
father.swf
son.swf
son.swf
parent.swfはAdobe Flash Professional CS 5で編集され、コードは直接時間軸に書かれています.
Aドメインのparent.swfはBドメインのchildのロードを担当する.swfはステージに表示されます
今はchildです.swfのソースコード、Flash Developでコンパイルした
テスト環境:
システム:win 8、
Chrome 24.0.1312.57 m、 > Flash Player 11,6,602,155
Firefox 19.0 > Flash Player 11,6,602,155
IE 10 > Flash Player 11,6,602,167
テスト結果:
要求方法ブラウザ
chrome
firefox
ie
GET
father.swf
father.swf
son.swf
POST
father.swf
son.swf
son.swf
parent.swfはAdobe Flash Professional CS 5で編集され、コードは直接時間軸に書かれています.
Aドメインのparent.swfはBドメインのchildのロードを担当する.swfはステージに表示されます
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.net.URLRequest;
/**
* flash
* @author @ASV5 - http://weibo.com/rich
*/
public class Main extends Sprite
{
public function Main():void
{
addEventListener(Event.ENTER_FRAME, checkStage);
}
private function checkStage(e:Event):void
{
if (stage.stageWidth > 0 && stage.stageHeight > 0)
{
removeEventListener(Event.ENTER_FRAME, checkStage);
init();
loadSWF("http://www.B.com/FatherSonRequest/son.swf");
}
}
private function init():void
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
graphics.beginFill(0x9BA224);
graphics.lineStyle(2,0x333333);
graphics.drawRect(1, 1, stage.stageWidth - 2, stage.stageHeight - 2);
graphics.endFill();
}
private function loadSWF(swfURL:String):void
{
if (swfURL == null || swfURL == "") return;
var rs:URLRequest = new URLRequest(swfURL);
var ld:Loader = new Loader();
ld.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoaded);
ld.load(rs);
}
private function onDataLoaded(e:Event):void
{
var tgt:Loader = e.target.loader as Loader;
addChild(tgt);
}
}
}
今はchildです.swfのソースコード、Flash Developでコンパイルした
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.external.ExternalInterface;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import flash.system.Security;
/**
* ...
* @author @ASV5 - http://weibo.com/rich
*/
public class Son extends Sprite
{
private var url:String = "http://www.mysite.com/request.php";
public function Son()
{
Security.allowDomain("*");
init();
//getRS();
postRS();
}
private function init():void
{
graphics.beginFill(0xCACACA);
graphics.lineStyle(1, 0xB3B3B3);
graphics.drawRect(0, 0, 300, 300);
graphics.endFill();
}
private function postRS():void
{
var rs:URLRequest = new URLRequest(url);
rs.method = URLRequestMethod.POST;
var ld:URLLoader = new URLLoader();
var d:URLVariables = new URLVariables();
d.name = "ASV5";
rs.data = d;
ld.addEventListener(Event.COMPLETE, onDataLoaded);
ld.load(rs);
}
private function getRS():void
{
var rs:URLRequest = new URLRequest(url);
var ld:URLLoader = new URLLoader();
ld.addEventListener(Event.COMPLETE, onDataLoaded);
ld.load(rs);
}
private function onDataLoaded(e:Event):void
{
var data:String = e.target.data as String;
console(data);
trace(data);
}
private function console(log:String):void
{
if (ExternalInterface.available)
{
//ExternalInterface.call("console.log("+ log +")");
ExternalInterface.call("console.log", log);
}
}
}
}