精华内容
下载资源
问答
  • name= requests.get(url=url, headers=header, allow_redirects=False) allow_redirects=False 显示跳转后的链接
    name= requests.get(url=url, headers=header, allow_redirects=False)
    

    allow_redirects=False
    显示跳转后的链接

    展开全文
  • from scrapy.spider import CrawlSpider from scrapy.selector import Selector ...这是我的爬虫源码,如何阻止301/302重定向,要抓取的是百度所有词条,但是总会发生重定向导致无法获得想要的网页
  • ![图片说明](https://img-ask.csdn.net/upload/201803/23/1521796039_49852.png) 如图,应该是重定向,但是看代码的意思 好像可以把值设置到request中,然后带过去, 不是说重定向不会带值的吗,请求转发才带。
  • request:请求对象;response:响应对象 请求转发:request.getRequestDispatcher("要跳转页面").forward(request, response); 重定向:response.sendRedirect("要跳转jsp页面"); 请求转发request 重定向...

    request:请求对象;response:响应对象

    请求转发:request.getRequestDispatcher("要跳转页面").forward(request, response);

    重定向:response.sendRedirect("要跳转jsp页面");

    二者区别:

      请求转发request 重定向response
    地址栏是否改变 不变
    第一次访问数据是否保留 保留 不保留
    访问次数 1 2
    跳转发生的·位置 服务端 客户端

    reques次数:

    response次数:

    请求转发与重定向用现实中例子:一天,你和伴侣去民政局领结婚证,到A窗口后,找A工作人员办理业务,有两种情况:

    1、A工作人员无法办理你们的业务,但是他直接找B工作人员帮你们办理,然后B工作人员把结果返回给你们(请求转发,一条龙服务);

    2、A工作人员无法办理你们的业务,让你们去B窗口找B工作人员,你们只好找B(重定向)。

                                                         

    展开全文
  • request重定向和转发

    2012-10-12 09:29:19
    forward方式:request.getRequestDispatcher("/somePage.jsp").forward(request, response); redirect方式:response.sendRedirect("/somePage.jsp"); forward是服务器内部重定向,程序收到请求后重新定向到另一个...
    forward方式:request.getRequestDispatcher("/somePage.jsp").forward(request, response);    
    redirect方式:response.sendRedirect("/somePage.jsp");
    forward是服务器内部重定向,程序收到请求后重新定向到另一个程序,客户机并不知道;redirect则是服务器收到请求后发送一个状态头给客户,客户将再请求一次,这里多了两次网络通信的来往。当然forward也有缺点,就是forward的页面的路径如果是相对路径就会有些问题了。    forward 会将 request state , bean 等等信息带往下一个 jsp
    redirect 是送到 client 端后再一次 request , 所以资料不被保留.
    使用 forward 你就可以用 getAttribute() 来取的前一个 jsp 所放入的 bean 等等资料
    
    在网上看到一些帖子,总结了一些区别,可以从以下几个方面来看:
    
    1.从地址栏显示来说
    
    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
    
    redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。
    
    2.从数据共享来说
    
    forward:转发页面和转发到的页面可以共享request里面的数据.
    redirect:不能共享数据.
    
    redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源.
    
    forward,方法只能在同一个Web应用程序内的资源之间转发请求.forward 是服务器内部的一种操作.
    redirect 是服务器通知客户端,让客户端重新发起请求.
    
    所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "
    
    
    3.从运用地方来说
    
    forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
    
    redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
    
    4.从效率来说
    forward:高.
    redirect:低.
    原文地址:http://zhidao.baidu.com/question/360515312.html&__bd_tkn__=7ff943203c3d863e5b23a365b8f72fa1891b9fad8078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157b5afd379c62aaf95c0f03de0125270fa43bc9063b039a770d2aca8bdb48337d755b402ab817783648c7a4aaeb0689accbdc8c0bcb3526f64daf
    展开全文
  • java 转发request重定向response的区别

    千次阅读 2013-07-28 22:41:57
    重定向request...forward() 转发 【在服务器端进行转换】 实现转向的异同     1.前面慢,后者快   2.前面无法读取request.setAttribute()所保存的数值,而后者可以读取   3.前者地址栏显示真正...

    简要说明:

    reponse.sendRedirect()   重定向 与 request...forward() 转发 【在服务器端进行转换】 实现转向的异同 
     
      1.前面慢,后者快 

      2.前面无法读取request.setAttribute()所保存的数值,而后者可以读取 

      3.前者地址栏显示真正转向后的地址,而后者显示的是转向前的地址 

      4.前者,转向地址开始的"/",表示的是本机的根目录;而后者,"/"表示的是应用的根目录

           response.sendRedirect("/webApp_1/Index.jsp");  =  getRequestDispatcher("/Index.jsp"); 

     

    定义: 
    不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。 
    重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。 
    转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。 

    调用方式如下: 
    request.getRequestDispatcher("apage.jsp").forward(request,response);//转发到apage.jsp ,地址栏地址不变
    response.sendRedirect("apage.jsp");//重定向到apage.jsp,地址栏地址相应变化
    在jsp页面中你也会看到通过下面的方式实现转发: 



    总结: 
    用重定向和转发不是一个习惯问题。而是什么情况下必须用什么的问题。 
    不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。 
    重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。 
    转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。 

    1、dispatch还是原来的request,但是redirect则是重新建立一个request。 
    2、dispatch基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如:req.sendRedriect("http://www.taobao.com"); 
    有关JSP/Servlet的重定向技术综述如下[补充] 

    1.RequestDispatcher.forward() 
     
    是在服务器端起作用,当使用forward()时,Servletengine传递HTTP请求
    从当前的Servlet or JSP到另外一个Servlet,JSP或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在b.jsp都可以获得,参数自动传递. 
     
    但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面. 

     
     转发后浏览器地址栏URL不变. 

    例:在servlet中进行转发
    public void doPost(HttpServletRequest request,HttpServletResponseresponse) 
    throws ServletException,IOException 
    { 

     
          response.setContentType("text/html; charset=gb2312"); 

     
          ServletContext sc = getServletContext(); 

     
          RequestDispatcher rd = null; 

     
          rd =sc.getRequestDispatcher("/index.jsp");    //定向的页面 

     
          rd.forward(request, response); 

    } 
    通常在servlet中使用,不在jsp中使用。 

    2.response.sendRedirect() 
     
      是在用户的浏览器端工作,sendRedirect()可以带参数传递,
    比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,
    sendRedirect()可以重定向有frame.的jsp文件. 
     
     重定向后在浏览器地址栏上会出现重定向后页面的URL 
    例:在servlet中重定向 
    public void doPost(HttpServletRequest request,HttpServletResponseresponse) 

     
          throws ServletException,IOException 

    { 

     
          response.setContentType("text/html; charset=gb2312"); 

     
          response.sendRedirect("/index.jsp"); 

    } 
    由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定向。 
    注意: 
    (1).使用response.sendRedirect时,前面不能有HTML输出。 
    这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。 
    (2).response.sendRedirect之后,应该紧跟一句return; 
    我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。 
    比较: 
    (1).RequestDispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址; 
    (2).response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。 
    前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法. 

    注:在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。 

    3.<jsp:forward page="" /> 

    它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。 


    如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。 
    另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交 

    4.修改HTTP header的Location属性来重定向 
     
     通过设置直接修改地址栏来实现页面的重定向。 
    jsp文件代码如下: 

    <% 
    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
    String newLocn = "/newpath/jsa.jsp"; 
    response.setHeader("Location",newLocn); 
    %> 

    5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面 
     
    在html文件中,下面的代码: 
     
      <meta http-equiv="refresh" content="300;url=target.jsp"> 
     
      它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。 
     
      由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。 
     
      关键代码: 
     
            String content=stayTime+";URL="+URL; 
     
            response.setHeader("REFRESH",content); 
     

    如何选择:

    RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。

     

    原理: 
    1、 Forward
    这种方式是在服务器端作 的重定向。服务器往client发送数据的过程是这样的:服务器在向客户端发送数据之前,是先将数据输出到缓冲区,然后将缓冲区中数据发送给client端。什么时候将缓冲区里的数据发送给client端呢?(1)当对来自client的request处理完,并把所有数据输出到缓冲区,(2)当缓冲区满,(3)在程序中调用缓冲区的输出方法out.flush()或response.flushbuffer(),webcontainer才将缓冲区中的数据发送给client。
    这种重定向方式是利用服务器端的缓冲区机制,在把缓冲区的数据发送到客户端之前,原来的数据不发送,将执行转向重定向页面,发送重定向页面的数据,重定向调用页的数据将被清除。特别提示: 在<JSP:FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么这种重定向方式将不起作用。
    public void doPost(HttpServletRequest request,HttpServletResponseresponse) throws ServletException,IOException
    {
    response.setContentType(”text/html; charset=UTF-8″);
    ServletContext sc = getServletContext();
    RequestDispatcher rd = null;
    rd = sc.getRequestDispatcher(”/index.jsp”);
    rd.forward(request, response);
    }
    2、 sendRedirect
    这种方式是在客户端作的重定向处理。该方法通过修改HTTP协议的HEADER部分(设置状态代码302,命令浏览器发重新发送请求),对浏览器下达重定向指令的,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容。该方法可以接受绝对的或相对的URLs。如果传递到该方法的参数是一个相对的URL,那么Web container在将它发送到客户端前会把它转换成一个绝对的URL。public voiddoPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
    {
    response.setContentType(”text/html; charset=UTF-8″);
    //response.sendRedirect(”/index.jsp”); 效果和前面forward一样
    response.sendRedirect(”http://www.sohu.com”); //跳转到sohu
    }

     

    区别:

    1、forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL,因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。
    2、forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式两者不是同一个application。
    3、基于第二点,参数的传递方式不一样。forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)。
    4、 sendRedirect能够处理相对URL,自动把它们转换成绝对URL,如果地址是相对的,没有一个‘/’,那么Webcontainer就认为它是相对于当前的请求URI的。比如,如果为response.sendRedirect(”login.jsp”),则会从当前servlet 的URL路径下找login.jsp:http://127.0.0.1:8080/test/servlet/Servlet 重定向的URL:http://127.0.0.1:8080/test/servlet/login.jsp,如果为response.sendRedirect(”/login.jsp”)则会从当前应用径下查找url:http://127.0.0.1:8080/login.jsp。而forward不能这样处理相对路径。
    java
    他们的区别是:
    response.sendRedirect是向客户浏览器发送页面重定向指令,浏览器接收后将向web服务器重新发送页面请求,所以执行完后浏览器的url显示的是跳转后的页面。跳转页面可以是一个任意的url(本服务器的和其他服务器的均可)。

    +++++------------------------------------------------------------------------------------------------------------------------------------------------------++++

    RequestDispatcher.forward则是直接在服务器中进行处理,将处理完后的信息发送给浏览器进行显示,

    所以完成后在url中显示的是跳转前的页面。在forward的时候将上一页面中传送的request和response信息一同发送给下一页面(而response.sendRedirect不能将上一页面的request和response信息发送到下一页面)。由于forward是直接在服务器中进行处理,所以forward的页面只能是本服务器的。

    展开全文
  • 重定向的状态码 301 redirect: 301 代表永久性转移(Permanently Moved) 302 redirect: 302 代表暂时性转移(Temporarily Moved ) 实例 请求: http://www.cninfo.com.cn/new/disclosure/detail?plate=szse&...
  • nodejs request模块302重定向解决办法

    千次阅读 2020-04-12 12:07:19
    nodejs request模块302重定向解决办法 有两种方法处理,下面以https://bbs.125.la/为例: 1、开启记录cookie的 jar var request = require('request'); //开启记录cookie,重定向时自动带上cookie request = request....
  • request中禁止重定向

    千次阅读 2019-02-13 11:32:32
    在requests 中添加属性 allow_redirects=False
  • request转发和response重定向 1. request转发:一种服务器内部的资源跳转方式。 步骤: 1.通过request对象获取转发器对象 2.使用转发器对象进行转发 RequestDispatcher requestDispatcher = request....
  • 内置对象 1.request 转发和重定向: 都是用来做页面的跳转 1.转发跳转可以将request对象中的内容共享到下一个页面...2.重定向不可以将request对象中的内容共享到下一个页面 3.转发地址不变,重定向地址改变 ...
  • request转发、重定向

    2010-12-23 20:26:00
    区别一:重定向时浏览器上的网址改变转发是浏览器上的网址不变区别二:重定向实际上产生了两次请求转发只有一次请求重定向图解:(向客户端发出两次request请求)发送请求 -->服务器运行-->响应请求,返回给浏览器一个...
  • Request请求转发和重定向 一,Request请求转发 (一),请求转发:在服务器内部的资源跳转的方式 我们在实际开发中,需要写不同的servlet,每个人servlet完成不同的功能,当我们访问Aservlet的时候, Aservlet实现部分...
  • https://learnku.com/laravel/t/35096
  • this.getServletContext().getRequestDispatcher("/ResponseDemo8").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ...
  • Response重定向 response.sendRedirect("地址"); 浏览器主动转向该地址,URL会改变,浏览器会重新向服务器发送Request。 优点:Response可以进行跨域。 缺点:Request的数据会失去,只能进行页面的跳转。 Request...
  • 1,转发:request.getRequestDispatcher("/").forward(request,response); 转发中的/代表web应用根目录;...2,重定向request.sendRedirect("/");重定向下的/代表web应用的站点目录(例如本机目录localhost:8080)
  • JSP中response.sendRedirect()与request.getRequestDispatcher().forward...1.response.sendRedirect(url)—–重定向到指定URL ,前后页面不是一个request  request.getRequestDispatcher() ——-是请求转发,前后
  • 在做web项目时我们经常会用到转发和... 为什么response重定向和为什么request是转发?  当我们些许的去思考这个问题的时候,是否和我一样有恍然大悟的感觉呢。   request的转发    首先说说req
  • request转发: //转发到index.jsp页面 request.getRequestDispatcher("index.jsp").forward(request, response); response重定向: // 页面重定向 response.sendRedirect(request....
  • response(响应)request(请求)对象的作用, 重定向的特点, 请求转发和包含的特点与区别, 请求转发和重定向的区别,get和post的区别 JSP的response隐藏对象在转换bai为Servlet之后,对应于duHttpServletResponse...
  • 为什么重定向会丢失request

    千次阅读 2018-03-19 12:57:03
    https://zhidao.baidu.com/question/432436445089859244.html重定向就是:A访问C的时候,C里写了重定向,C的走向是先返回A,在由A自动访问重定向的D然后返回...而request的有效期是在一次的请求响应中有效,而重定向...
  • request.getRequestDispatcher().forward(request, response); response.sendRedirect("XXX.jsp");区别: 1.地址栏request请求转发:浏览器地址栏不发生变化 forward是服务器内部重定向,程序收到请求后重新定向到...
  • 请求转发 *(forward)和重定向(redirect)*的区别: ... 转发的特点: 转发地址栏路径不变 转发只能访问当前服务器下的资源 可以访问WEB-INF下的资源 ...重定向是两次请求, 不可以使用request域对象来共享数据 ...
  • 文章目录Servlet(二:HttpServletRequest request 请求转发与重定向)HttpServletRequest request概念方法getParameterValues("hobby")getParameterMap()getParameterNames()内部转发概念特点代码运行结果request域...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 184,289
精华内容 73,715
关键字:

request重定向