求大神解答!转发和重定向的区别

2016-06-21 21:32:15 +08:00
 466934322
看了百度。转发是服务器操作!重定向是客户端操作!那么我从页面上 index.php?Id=22 类似这种,传过去的应该属于服务器转发还是客户端重定向?
2859 次点击
所在节点    PHP
11 条回复
shiji
2016-06-21 21:44:40 +08:00
这通常是转发。

以后自己打开浏览器 F12 切到网络,然后输入地址回车,返回的第一个状态码是 3XX (比如 301 302 之类的)就是重定向。否则就是 rewrite 或者什么也不是
bdbai
2016-06-21 23:52:28 +08:00
转发通常是让 URL 更好看一些,比如
/blog/post/22 -> /blog/post.php?id=22
转发发生在服务器收到请求后。客户端不知道实际地址。

HTTP 重定向在客户端是可见的。比如用户登录成功后服务器执行 header('Location: /welcome'); 客户端收到回应后会立即再往 /welcome 这里发一个请求,地址栏上可以观察到。

你举的例子只是普通的 GET 参数传递,没有涉及到转发或重定向。
luckycat
2016-06-22 03:07:21 +08:00
URL 转发 和 URL 重定向没有区别。都是服务器向客户端返回 HTTP 301 或 HTTP 302 响应而已。

百度搜索技术问题最令人无语的地方就是,总会有一堆自己都没弄明白怎么回事的人过来教你。让你怀疑自己智商有问题。
wingtatlee
2016-06-22 04:51:34 +08:00
你所說的轉發和重定向是 Forward 和 Redirect 嗎?分別是很大的。
Redirect - 是使用瀏覽器進行重定向。 It sends an http response with code 3xx ,然後瀏覽器會發出另外的 request 去到新的頁面。
Forward - 這是內部的操作。瀏覽器是不知道頁面發生了什麼改變,因此 URI 是不會發生改變的,你還是在原來同一個頁面。

理論上來說, Forward 會更快,因為瀏覽器沒有參與到操作,還是原來的 URL 。 Redirect 會相對慢,瀏覽器參與到操作中,你會得到新的 URL 。

你從頁面發出 index.php?Id=22 ,到底是 Forward 還是 Redirect 是視乎 server side 最後如何執行你的 request 。而使用哪一個是需要根據不同的 scenario 。
jatesun
2016-06-22 06:52:30 +08:00
这种问题随手谷歌一下,任何一个结果都比这要详细仔细得多→_→
466934322
2016-06-22 07:51:26 +08:00
@luckycat
@wingtatlee
@bdbai
@shiji
因为全栈的大牛告诉我,重定向可以防止表单重复提交!而我因为对安全也不懂,所以对这方面格外注重吧!
vjnjc
2016-06-22 12:16:34 +08:00
重定向是会产生 2 个 http 请求。
转发是 1 个 http 请求(在服务端)被 route 到了另外个 controller 处理逻辑。
shiji
2016-06-22 15:28:03 +08:00
@466934322 全栈的大牛。。。。

不管重定向还是 rewrite ,都不能防止表单重复提交吧?重定向点几次后退不就可以重新提交了吗?

而且把这个归为安全问题貌似太勉强了,应该是概念问题。

是有哪本脑残教材或者视频把重定向和转发拿出来比较了么?感觉几天前还有人在 sf 上问几乎一样的问题。
misaka19000
2016-06-22 16:29:05 +08:00
重定向:基于 HTTP 协议
转发:程序内部的数据转移
bdbai
2016-06-22 18:26:12 +08:00
@466934322 这大牛一定不是全栈...你可以找个 PHP 框架,看看它的重定向和 URL 路由分别是怎么用的,自己感受一下。
yukar
2016-06-24 19:22:35 +08:00
轉發:敲門之後直接把人給你找來
重定向:敲門後告訴你那人真實住址

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/287406

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX