高手帮忙解释下redirect背后的HTTP操作 以前看ASP.NET的时候知道redirect方法是先返回客户浏览器告诉它要重定向到另一个页面,然后客户浏览器就去请求那个页面。前几天看HTTP的时候知道HTTP的基本操作 客户端有GET POST HEAD方法,然后服务器有返回HTTP OK或者400什么的。于是就很费解这个redirect是怎么做的?烦请高手帮忙解释下,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以前看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 额 我是这个意思 redirect调用的时候下层的HTTP命令是怎么样的?我看HTTP的操作里只有客户端GET/POST/HEADER方法,服务器端就返回HTTP200 OK HTTP 400 ERROR之类的代码,那么客户端浏览器是根据什么知道该请求另一个网页呢? 客户端首先请求一个页面:用的POSTPOST /user!login.do HTTP/1.1Accept: */*Referer: 此处地址被我删除Accept-Language: en-usContent-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0Host: 被我删除Content-Length: 120Connection: Keep-AliveCache-Control: no-cacheCookie: 被我删除这里是post给服务器的数据,已经被我删除下面是服务器的返回结果:HTTP/1.1 301 Moved TemporarilyProxy-Connection: Keep-AliveConnection: Keep-AliveContent-Length: 87Expires: 0Date: Mon, 23 Mar 2009 05:54:51 GMTLocation: 浏览器收到3开头的返回状态字,就会去请求这里的这个页面,因此浏览器的内容也就被重定向到了这里了Vary: Accept-EncodingPragma: no-cacheCache-Control: no-cacheSet-Cookie: encry_user=fe3bdf95a8049fc264121a581a4c4ba1; domain=xiaoi.com; path=/; expires=Wed, 16-Mar-2039 05:54:51 GMT; HttpOnlyVary: Accept-Encoding上面的两段是我从软件中截出来的,如果要自己去看这个过程,你可以下载一个 iHttpHeader,不过这东西只支持IE6或者使用 HttpAnalysys,这个比较复杂点,不过支持更广泛服务器的返回状态字中,3开头的都是表示要重定向的301,302,303都有可能,这个貌似是与web server的设置有关的,具体情况目前我还不清楚具体的RFC文档请参考:http://www.w3.org/Protocols/rfc2616/rfc2616.html 网站制作中的页面属性设置 ajax和asp.net 2.0 ajax 请问根据访问者的地域,跳转到相应的地方域名,怎么实现的? 刚才的问题继续问,请大家帮助 Ajax.Utility.RegisterTypeForAjax(GetType(AjaxMethods)) 关于数据不能更新的问题 关于文件上传的问题 (深圳公司) ASP.NET网站开发工程师 如何定时执行一段程序 .net手机端Web页 点击按钮将文字复制到剪贴板如何能实现? 用reflector反编译dll为项目后不能正向编译 小问题一个 关于用户控件
你自己都說了啊
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
我看HTTP的操作里只有客户端GET/POST/HEADER方法,服务器端就返回HTTP200 OK HTTP 400 ERROR之类的代码,那么客户端浏览器是根据什么知道该请求另一个网页呢?
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