sendAndLoad和Redirect的测试as
sendAndLoad和Redirect的测试as
发布时间:2016-12-28 来源:查字典编辑
摘要:今天我们来测试下当SWF文件将参数以POST方式传给s1.asp,而s1.asp中有Redirect方法转到s2.asp,s2.asp有Re...

今天我们来测试下当SWF文件将参数以POST方式传给s1.asp,而s1.asp中有Redirect方法转到s2.asp,s2.asp有Redirect方法转到s3.asp时,SWF返回的是由哪个文件产生的值?

1.测试过程

ActionScript:

程序代码

on(release){

varmyvar=newLoadVars();

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.aspmzwuback”,很明显,这个结果是由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){

varmyvar=newLoadVars();

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.aspmzwuback",很明显,我们通过一些方法实现了不需crossdomain.xml的跨域访问!网银在线支付的实现原理其实也就是:企业站点→在线支付接口→企业站点,那用Flash做个支付界面会很难吗?:)

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Flash教程学习
热门Flash教程学习
网页设计子分类