sendAndLoad和Redirect的測試as
更新時間:2007年07月23日 00:00:00 作者:
今天我們來測試下當SWF文件將參數(shù)以POST方式傳給s1.asp,而s1.asp中有Redirect方法轉(zhuǎn)到s2.asp,s2.asp有Redirect方法轉(zhuǎn)到s3.asp時,SWF返回的是由哪個文件產(chǎn)生的值?
1.測試過程
ActionScript:
程序代碼
on (release) {
var myvar = new LoadVars();
myvar.s = "mzwu";
myvar.sendAndLoad("s1.asp",myvar,"post");
myvar.onLoad = function(re){
if(re){
t2.text = myvar.url;
}else{
t2.text = "加載失敗!";
}
}
}
s1.asp:
程序代碼
<%
Response.Redirect("s2.asp?s=" & Request.Form("s"))
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s2.asp:
程序代碼
<%
Response.Redirect("s3.asp?s=" & Request.QueryString("s") & " back")
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s3.asp:
程序代碼
<%
Response.Write("url=" & Request.ServerVariables("URL") & " " & Request.QueryString("s"))
%>
SWF中可以看到返回的結(jié)果為“/s3.asp mzwu back”,很明顯,這個結(jié)果是由s3.asp產(chǎn)生的。那我們就可以得出結(jié)論:當多個頁面中存在Redirect時,SWF返回的將是最終頁面產(chǎn)生的值!
2.無需crossdomain.xml的跨域訪問
眾所周知,SWF要進行跨域訪問時,除了發(fā)布成EXE格式,就只能在受訪服務器上布署crossdomain.xml文件了,但實際上多數(shù)情況是我們需要將Flash文件插入到頁面中(只能是SWF格式)進行跨域訪問,并且受訪域我們沒有操作權(quán)限(無法布署crossdomain.xml文件)!
基于第1點的測試結(jié)果,我們可以將SWF文件、s1.asp、s3.asp布署在我們自己的服務器上,s2.asp是受訪問域上的文件。我們將上邊文件代碼稍做修改再次進行測試:
ActionScript:
程序代碼
on (release) {
var myvar = new LoadVars();
myvar.s = "mzwu";
myvar.sendAndLoad("s1.asp",myvar,"post");
myvar.onLoad = function(re){
if(re){
t2.text = myvar.url;
}else{
t2.text = "加載失??!";
}
}
}
s1.asp:
程序代碼
<%
Response.Redirect("http://free.66ip.com/test07/s2.asp?s=" & Request.Form("s"))
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s2.asp:
程序代碼
<%
Response.Redirect("http://www.mzwu.com/s3.asp?s=" & Request.QueryString("s") & " back")
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s3.asp:
程序代碼
<%
Response.Write("url=" & Request.ServerVariables("URL") & " " & Request.QueryString("s"))
%>
結(jié)果仍是"/s3.asp mzwu back",很明顯,我們通過一些方法實現(xiàn)了不需crossdomain.xml的跨域訪問!網(wǎng)銀在線支付的實現(xiàn)原理其實也就是:企業(yè)站點→在線支付接口→企業(yè)站點,那用Flash做個支付界面會很難嗎?:)
1.測試過程
ActionScript:
程序代碼
on (release) {
var myvar = new LoadVars();
myvar.s = "mzwu";
myvar.sendAndLoad("s1.asp",myvar,"post");
myvar.onLoad = function(re){
if(re){
t2.text = myvar.url;
}else{
t2.text = "加載失敗!";
}
}
}
s1.asp:
程序代碼
<%
Response.Redirect("s2.asp?s=" & Request.Form("s"))
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s2.asp:
程序代碼
<%
Response.Redirect("s3.asp?s=" & Request.QueryString("s") & " back")
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s3.asp:
程序代碼
<%
Response.Write("url=" & Request.ServerVariables("URL") & " " & Request.QueryString("s"))
%>
SWF中可以看到返回的結(jié)果為“/s3.asp mzwu back”,很明顯,這個結(jié)果是由s3.asp產(chǎn)生的。那我們就可以得出結(jié)論:當多個頁面中存在Redirect時,SWF返回的將是最終頁面產(chǎn)生的值!
2.無需crossdomain.xml的跨域訪問
眾所周知,SWF要進行跨域訪問時,除了發(fā)布成EXE格式,就只能在受訪服務器上布署crossdomain.xml文件了,但實際上多數(shù)情況是我們需要將Flash文件插入到頁面中(只能是SWF格式)進行跨域訪問,并且受訪域我們沒有操作權(quán)限(無法布署crossdomain.xml文件)!
基于第1點的測試結(jié)果,我們可以將SWF文件、s1.asp、s3.asp布署在我們自己的服務器上,s2.asp是受訪問域上的文件。我們將上邊文件代碼稍做修改再次進行測試:
ActionScript:
程序代碼
on (release) {
var myvar = new LoadVars();
myvar.s = "mzwu";
myvar.sendAndLoad("s1.asp",myvar,"post");
myvar.onLoad = function(re){
if(re){
t2.text = myvar.url;
}else{
t2.text = "加載失??!";
}
}
}
s1.asp:
程序代碼
<%
Response.Redirect("http://free.66ip.com/test07/s2.asp?s=" & Request.Form("s"))
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s2.asp:
程序代碼
<%
Response.Redirect("http://www.mzwu.com/s3.asp?s=" & Request.QueryString("s") & " back")
Response.Write("url=" & Request.ServerVariables("URL"))
%>
s3.asp:
程序代碼
<%
Response.Write("url=" & Request.ServerVariables("URL") & " " & Request.QueryString("s"))
%>
結(jié)果仍是"/s3.asp mzwu back",很明顯,我們通過一些方法實現(xiàn)了不需crossdomain.xml的跨域訪問!網(wǎng)銀在線支付的實現(xiàn)原理其實也就是:企業(yè)站點→在線支付接口→企業(yè)站點,那用Flash做個支付界面會很難嗎?:)
相關(guān)文章
完整簡潔 Flash 處理XML 文檔數(shù)據(jù) 教程 下篇
完整簡潔 Flash 處理XML 文檔數(shù)據(jù) 教程 下篇...2007-12-12