• response.redirect和server.Transfer的差别详解


    Response.Redirect和Server.Transfer都能实现页面的跳转,但两者又有很大区别。

    一 地址栏里显示的地址不同

    Response.Redirect会显示跳转的网页的地址,而Server.Transfer显示跳转前的网页的地址。
    假如用上述两种方式实现WebForm1.aspx跳转到WebForm2.aspx

    Response.Redirect跳转后地址栏会显示…/WebForm2.aspx

    Server.Transfer    跳转后地址栏则显示…/WebForm1.aspx。

    二 跳转的流程不同

    当服务器碰到Response.Redirect语句时,会发送一条新URL的指令给浏览器,浏览器发送新URL的http请求,流程如下:

    浏览器Http请求->服务器执行->遇到Response.Redirect语句->服务器发送新URL给客户端浏览器->浏览器请求执行新URL。

    当服务器碰到Server.Transfer语句时,会直接转向新的URL,流程如下:

    浏览器Http请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件。

    三 跳转的URL范围不同

    Response.Redirect可以定向到任何URL(包括站外的URL);而Server.Transfer只能跳转到站内的URL,而且只能是相对地址。

    四 跳转的URL传递参数方式不同

    前者跳转的URL可以包含参数;而Server.Transfer跳转的URL不能带参数,但可以根据条用参数决定是否保留Request集合里的内容。

    如果要跳转Test.aspx?id=1000,只能用前者,不能用后者。

    五 效率

    Server.Transfer页面跳转的效率比Response.Redirect高;且由于在服务器上执行,可以兼容任何浏览器,但是只能在IIS服务器下运行。

    六 对SEO的影响

    页面中采用Response.Redirect跳转时,如果不返回301错误码,则有可能受SEO惩罚;而Server.Transfer不会受SEO惩罚。

    转自http://www.sowsoy.com/topics-360.html

  • 相关阅读:
    webpack基础
    LeetCode232. 用栈实现队列做题笔记
    mysql 时间加减一个月
    leetcode 1381. 设计一个支持增量操作的栈 思路与算法
    LeetCode 141. 环形链表 做题笔记
    leetcode 707. 设计链表 做题笔记
    leetcode 876. 链表的中间结点 做题笔记
    leetcode 143. 重排链表 做题笔记
    leetcode 1365. 有多少小于当前数字的数字 做题笔记
    LeetCode1360. 日期之间隔几天 做题笔记
  • 原文地址:https://www.cnblogs.com/0515offer/p/4171379.html
Copyright © 2020-2023  润新知