zoukankan      html  css  js  c++  java
  • php中的页面跳转和重定向

    php中的页面跳转和重定向

    ThinkPHP中跳转和重定向的区别

    跳转:

    浏览器认为: 当前URL请求成功, 重新请求新的URL.

    浏览器会 记录当前的URL 和 新的URL 在请求历史记录中.

    回退, 是可以回退到, 当前的URL上的. (无论 success, 和 error 都是一样)

    语法实现:  在浏览器层面, 修改浏览器的location.href来实现的:location.href=href;

    重定向:

    浏览器认为, 当前的URL无效, 被重新定位到新的URL上.

    浏览器不会记录当前的URL到历史记录中,

    不能回退到当前的URL中.

    语法实现, 都是服务器向浏览器发出重定向响应指令,

    通过响应头:

    header('Location:'. URL), 立即重定向到某个URL

    header('Refresh: ')

    重定向使用实例

    重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

    我们在网站建设中,时常会遇到需要网页重定向的情况:
    1.网站调整(如改变网页目录结构);
    2.网页被移到一个新地址;
    3.网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
    这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

    什么时候用转发什么时候重定向

    java中,如果你要跳转的那个页面需要用到你本页的参数,就用转发request.getRequestDispache("目标页面").forward(request,response),反之则可以用重定向

    转发是在服务器内跳转的
    重定向是服务器反馈客户端,由客户端重新发起其他请求

    java中转发与重定向的区别

    转发与重定向的区别如下:

    转发是服务器行为,重定向是客户端行为

    1.转发在服务器端完成的;重定向是在客户端完成的

    2.转发的速度快;重定向速度慢

    3.转发的是同一次请求;重定向是两次不同请求

    4.转发不会执行转发后的代码;重定向会执行重定向之后的代码

    5.转发地址栏没有变化;重定向地址栏有变化

    6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

    在servlet中调用转发、重定向的语句如下:

    request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jsp

    response.sendRedirect("new.jsp");//重定向到new.jsp

    转发过程:客户浏览器发送http请求,web服务器接受此请求,调用内部的一个方法在容器内部完成请求处理和转发动作,将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

    重定向过程:客户浏览器发送http请求,web服务器接受后发送302状态码响应及对应新的location给客户浏览器,客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址,服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

    重定向,其实是两次request

    第一次,客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。

    php中的页面跳转和重定向的关系与区别

    首先解释下,页面跳转与页面重定向的关系?

    页面重定向一定会有页面跳转,页面跳转不一定会有页面重定向,也就是说页面重定向真包含于页面跳转,页面重定向是页面跳转的充分不必要条件。

    总结下PHP下的几种页面跳转的方法

    1、meta标签实现 
    只需在head里加上下面这一句就行了,在当前页面停留0秒后跳转到目标页面

    echo '<meta http-equiv="refresh" content="0;url=https://www.baidu.com">';

    2、JavaScript实现

    echo '<script>window.location.href = 'https://www.baidu.com';</script>';

    3、PHP页面重定向实现

    header('Location: https://www.baidu.com');

    使用PHP页面重定向跳转与上面两种方法有点不同的是,它的http应答状态码是指定为3xx。具体差别涉及HTTP的请求过程,这里就不细说了。

    重定向是浏览器解析http的首部指令(比如302状态码)时实现跳转的,这个过程不会响应跳转前的页面,而普通页面跳转是在html页面(即http响应的主体)执行时进行跳转的。

     

  • 相关阅读:
    建立适当的索引
    Windows 10Bash命令
    代码生成工具介绍和使用
    分布式的任务调度框架
    Net分布式系统
    Keepalived+LVS+Nginx负载均衡之高可用
    call,apply,bind
    2015搜狐在线笔试题(内存泄露问题)(转)
    十步完全理解SQL(转)
    Linux shell用法和技巧(转)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8669233.html
Copyright © 2011-2022 走看看