1. 云栖社区>
  2. PHP教程>
  3. 正文

Response.Redirect和Server.Transfer的区别

作者:用户 来源:互联网 时间:2017-12-01 15:45:24

serverredirectresponse区别Transfer

Response.Redirect和Server.Transfer的区别 - 摘要: 本文讲的是Response.Redirect和Server.Transfer的区别, response.redirect 其实是当服务器碰到这条语句时发送一条指令(包含新的地址)给浏览器,然后让浏览器去发送http请求,请求那个新的地址,流程如下:  浏览器ASP文件请求->服务器执行->遇到response.


response.redirect 其实是当服务器碰到这条语句时发送一条指令(包含新的地址)给浏览器,然后让浏览器去发送http请求,请求那个新的地址,流程如下:
  浏览器ASP文件请求->服务器执行->遇到response.redirect语句->服务器发送response.redirect后面的地址给客户机端的浏览器->浏览器请求执行新的地址(服务器返回的Response.Redirect后面的地址)
PS: ASP.net里面用Response.Redirect跳转,PHP里面是Header("Location",$URL);这两种方式都是一样的原理,就是在输出的HTTP头里面加上一个Location字段,值为要跳转的目的地址,同时把返回的HTTP状态值设为302。
Server.Transfer 语句当接受地址后是直接转向后面的地址,流程如下:
  浏览器ASP文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件。
优缺点比较:
     1.Server.Transfer 只能在同一服务器端的同一站点内进行重定向;而response.redirect 没有此限制。
Server.Transfer 后面只能使用形如test.asp这样的相对路径的文件或者目录地址,不能带参数(似乎也可以带参,add By Shirlly)。比如要定向到 test.asp?id=1就只能用Response.Redirect 而不能用Server.Transfer。
     2.Server.Transfer 在服务器端直接重定向,不用像response.Redirect一样要先与浏览器通信再重定向,这样可以减轻服务器的压力,效率高。
     3.Server.Transfer 可以保留上下文信息,Server.Transfer 方法有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 querystring 和任何 form 变量都会同时传递到你定位的页面。 例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。
     4.Server.Transfer 不会改变客户端的浏览器地址栏内的地址,也不会更新浏览器的历史记录。而response.Redirect 则会显示重定向后的地址,也会更新浏览器的历史记录。
总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面(有一点小小的缺陷,请参见:http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920 )。
原文连接:http://www.cnblogs.com/baiyicug/archive/2008/08/27/1277729.html

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索server , redirect , response , 区别 Transfer ,以便于您获取更多的相关知识。