sendAndLoad和Redirect的測試as
2024-09-12 17:50:50
供稿:網友
今天我們來測試下當SWF文件將參數以POST方式傳給s1.asp,而s1.asp中有Redirect方法轉到s2.asp,s2.asp有Redirect方法轉到s3.asp時,SWF返回的是由哪個文件產生的值?
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中可以看到返回的結果為“/s3.asp mzwu back”,很明顯,這個結果是由s3.asp產生的。那我們就可以得出結論:當多個頁面中存在Redirect時,SWF返回的將是最終頁面產生的值!
2.無需crossdomain.xml的跨域訪問
眾所周知,SWF要進行跨域訪問時,除了發布成EXE格式,就只能在受訪服務器上布署crossdomain.xml文件了,但實際上多數情況是我們需要將Flash文件插入到頁面中(只能是SWF格式)進行跨域訪問,并且受訪域我們沒有操作權限(無法布署crossdomain.xml文件)!
基于第1點的測試結果,我們可以將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"))
%>
結果仍是"/s3.asp mzwu back",很明顯,我們通過一些方法實現了不需crossdomain.xml的跨域訪問!網銀在線支付的實現原理其實也就是:企業站點→在線支付接口→企業站點,那用Flash做個支付界面會很難嗎?:)