crossdomain.xml server timeout 或沒被allow的EVEN處理
Flash常見問題&教材 2008/06/10 10:46 在flash 妳要跨網域做loadVars flash Player ㄧ定會去問crossdomain.xml若問不過 AS2 沒有任何EVENT會觸發跟你說現在是什麼情形...Orz
但AS3雖然有onSecurityError但該DOMAIN只要第一次被觸發這個EVENT之後,flash Player就不會去問這個DOMAIN了,會在client端(flash Player)就擋掉所有DOMAIN的request,包含security.loadPolicyFile也是,所以你若是crossdomain.xml server timeout 你真的只能重LOAD頁面,不過若SERVER可以搭配reWrite讓flash Player以為你是訪問不同的DOMAIN那就有解了
作法:
AS:
var URLarr:Array=new Array("otherdomainA.im.tv", "otherdomainB.im.tv", "otherdomainC.im.tv");
var idx=0;
function loadXML(){
var srt = URLarr[idx]+"/aa.txt";
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
if (success) {
myHtml.text = this.toString();
clearInterval(IntNum);
} else {
trace("Error loading/parsing LoadVars.");
}
};
my_lv.load(srt);//這一行會觸發檢查http://otherdomain.im.tv/crossdomain.xml
idx++
}
var IntNum = setInterval(loadXML, 1000);
server的rewrite
設成若request為
otherdomainA.im.tv, otherdomainB.im.tv, otherdomainC.im.tv 都轉導為otherdomain.im.tv(flash吃轉導(304)的content)
但AS3雖然有onSecurityError但該DOMAIN只要第一次被觸發這個EVENT之後,flash Player就不會去問這個DOMAIN了,會在client端(flash Player)就擋掉所有DOMAIN的request,包含security.loadPolicyFile也是,所以你若是crossdomain.xml server timeout 你真的只能重LOAD頁面,不過若SERVER可以搭配reWrite讓flash Player以為你是訪問不同的DOMAIN那就有解了
作法:
AS:
var URLarr:Array=new Array("otherdomainA.im.tv", "otherdomainB.im.tv", "otherdomainC.im.tv");
var idx=0;
function loadXML(){
var srt = URLarr[idx]+"/aa.txt";
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
if (success) {
myHtml.text = this.toString();
clearInterval(IntNum);
} else {
trace("Error loading/parsing LoadVars.");
}
};
my_lv.load(srt);//這一行會觸發檢查http://otherdomain.im.tv/crossdomain.xml
idx++
}
var IntNum = setInterval(loadXML, 1000);
server的rewrite
設成若request為
otherdomainA.im.tv, otherdomainB.im.tv, otherdomainC.im.tv 都轉導為otherdomain.im.tv(flash吃轉導(304)的content)
Trackback Address :: http://diary.tw/allenliao/trackback/516

