Server.Transfer,Server.Execute和Response.Redirect的区别是什么?

首先,Response是让浏览器去重新转向到指定的网页,而Server自然是发生在服务器端。以下是三者的具体区别:重点是Server.Transfer和Response.Redirect的区别,可参考:

https://www.cnblogs.com/colder/p/4456986.html

https://blog.csdn.net/qiqibei666/article/details/86537627

以下是三者的具体区别:
(1)Server.Transfer方法: 

    Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。              

  • server.Transfer()跳转只需要客户端和服务端一次通讯,跳转在服务端实现
  • 因此并不会占用较多的 HTTP 请求,因此这可以减轻服务器的压力,使你的服务器运行更快
  • server.Transfer()实现跳转,浏览器URL上并没有看到有重定向痕迹,且重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换
  • 如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变
  • 使用server.Transfer()实现a页面到b页面的跳转,b页面可以接收a页面中的表单数据
  • server.Transfer()只能从在同一服务器端的同一站点间运行,所以你不能用 Server.Transfer 将用户重定向到另一服务器上的站点。

(2)Response.Redirect: 

 Response.Redirect方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。       

  • 需要客户端(浏览器)与服务端进行两次通信 :首先浏览器向客户端发送一次请求,浏览器接受请求返回一个302状态码和新的url,之后浏览器会对新的url发送一个请求,实现页面的跳转
  • 跳转之后浏览器显示的url发生改变
  • 使用response.redirect()从a页面跳转到b页面之后,就无法接收a页面中的表单中的数据
  • response.redirect()可以从一个跨服务器跨站点跳转

(3)Server.Execute方法: 

Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。       
    
    这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。       

总结:

Server.Transfer仅是服务器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;

Response.Redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

Server.Transfer是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 这个过程中浏览器和Web服务器之间经过了一次交互。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值