ASP.NET中Server.Transfer,Response.Redirect和Server.Execute的区别(重点)
服务端:
Server.Transfer(内部重定向):将执行完全转移到指定页面
Server.Execute:允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页(调用页面Page指令时添加:EnableViewStateMac=“False”)
客户端:
Response.Redirect(重定向):当浏览器请求aspx页面时,碰到Redirect(url)方法,
相当于告诉浏览器,你先需访问某页面,于是浏览器再向服务器发送一个到此页面的请求。
重定向是通过浏览器执行的,在服务器和浏览器之间会产生额外的往返过程。
区别:
1.URL地址栏:
Server.Transfer:在服务端完成,所以客户端浏览器的URL地址栏不会发生改变
Response.Redirect:在客户端完成,向服务器退出新页面的请求,客户端浏览器的URL地址栏会发生改变
2.切换对象
Server.Transfer:只能切换到同目录或子目录的网页
Response.Redirect:切换任何存在的网页
3.数据保密
Server.Transfer:地址不变,隐藏了新网页的地址以及附带在地址栏后边的参数值,具有数据保密功能
Response.Redirect:地址会变成跳转后的网址
4.传递的数据量
Server.Transfer:数据超过2KB时使用。
Response.Redirect:能够传递的数据已2KB为限。
5.使用的区域
Server.Transfer:只能从同一个服务端的同一个站点运行
Response.Redirect:可以从一个跨服务器跨站点跳转
6.建立通讯
Server.Transfer:跳转只需要客户端和服务端的一次通讯,跳转在服务端实现,减轻服务器压力
Response.Redirect:需要客户端与服务端进行两次通信(第一次是对原始页面的请求,得到一个302(Found重定向)应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面)