以前看ASP.NET的时候知道redirect方法是先返回客户浏览器告诉它要重定向到另一个页面,然后客户浏览器就去请求那个页面。前几天看HTTP的时候知道HTTP的基本操作  客户端有GET POST HEAD方法,然后服务器有返回HTTP OK或者400什么的。于是就很费解这个redirect是怎么做的?
烦请高手帮忙解释下,谢谢。

解决方案 »

  1.   

    以前看ASP.NET的时候知道redirect方法是先返回客户浏览器告诉它要重定向到另一个页面,然后客户浏览器就去请求那个页面。
    你自己都說了啊
    response是從服務器寫到客戶端的
    response.redirect就是把url寫到客戶端,然后客戶端再根據url請求服務器端進行頁面跳轉get,post
    比如在頁面跳轉的時候url為http://....aspx?id=1&name=a
    那么取值id和name的時候就是get,用request["id"]或者request.querystring["id"]取值
    如果用submit提交的時候url里邊并沒有id=1&name=a這些參數,則用request["id"]或者request.form["id"],當然這個時候的id是前一頁面的控件客戶端ID
      

  2.   

    额 我是这个意思 redirect调用的时候下层的HTTP命令是怎么样的?
    我看HTTP的操作里只有客户端GET/POST/HEADER方法,服务器端就返回HTTP200 OK HTTP 400 ERROR之类的代码,那么客户端浏览器是根据什么知道该请求另一个网页呢?
      

  3.   

    客户端首先请求一个页面:用的POST
    POST /user!login.do HTTP/1.1
    Accept:  */*
    Referer: 此处地址被我删除
    Accept-Language: en-us
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0
    Host: 被我删除
    Content-Length: 120
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: 被我删除这里是post给服务器的数据,已经被我删除下面是服务器的返回结果:
    HTTP/1.1 301 Moved Temporarily
    Proxy-Connection: Keep-Alive
    Connection: Keep-Alive
    Content-Length: 87
    Expires: 0
    Date: Mon, 23 Mar 2009 05:54:51 GMT
    Location: 浏览器收到3开头的返回状态字,就会去请求这里的这个页面,因此浏览器的内容也就被重定向到了这里了
    Vary: Accept-Encoding
    Pragma: no-cache
    Cache-Control: no-cache
    Set-Cookie: encry_user=fe3bdf95a8049fc264121a581a4c4ba1; domain=xiaoi.com; path=/; expires=Wed, 16-Mar-2039 05:54:51 GMT; HttpOnly
    Vary: Accept-Encoding上面的两段是我从软件中截出来的,
    如果要自己去看这个过程,你可以下载一个 iHttpHeader,不过这东西只支持IE6
    或者使用 HttpAnalysys,这个比较复杂点,不过支持更广泛服务器的返回状态字中,3开头的都是表示要重定向的
    301,302,303都有可能,这个貌似是与web server的设置有关的,具体情况目前我还不清楚具体的RFC文档请参考:http://www.w3.org/Protocols/rfc2616/rfc2616.html