1
shiji 2016-06-21 21:44:40 +08:00 via Android 1
这通常是转发。
以后自己打开浏览器 F12 切到网络,然后输入地址回车,返回的第一个状态码是 3XX (比如 301 302 之类的)就是重定向。否则就是 rewrite 或者什么也不是 |
2
bdbai 2016-06-21 23:52:28 +08:00 via Android 1
转发通常是让 URL 更好看一些,比如
/blog/post/22 -> /blog/post.php?id=22 转发发生在服务器收到请求后。客户端不知道实际地址。 HTTP 重定向在客户端是可见的。比如用户登录成功后服务器执行 header('Location: /welcome'); 客户端收到回应后会立即再往 /welcome 这里发一个请求,地址栏上可以观察到。 你举的例子只是普通的 GET 参数传递,没有涉及到转发或重定向。 |
3
luckycat 2016-06-22 03:07:21 +08:00 1
URL 转发 和 URL 重定向没有区别。都是服务器向客户端返回 HTTP 301 或 HTTP 302 响应而已。
百度搜索技术问题最令人无语的地方就是,总会有一堆自己都没弄明白怎么回事的人过来教你。让你怀疑自己智商有问题。 |
4
wingtatlee 2016-06-22 04:51:34 +08:00 1
你所說的轉發和重定向是 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 。 |
5
jatesun 2016-06-22 06:52:30 +08:00 via iPhone
这种问题随手谷歌一下,任何一个结果都比这要详细仔细得多→_→
|
6
466934322 OP |
7
vjnjc 2016-06-22 12:16:34 +08:00
重定向是会产生 2 个 http 请求。
转发是 1 个 http 请求(在服务端)被 route 到了另外个 controller 处理逻辑。 |
8
shiji 2016-06-22 15:28:03 +08:00 via Android
@466934322 全栈的大牛。。。。
不管重定向还是 rewrite ,都不能防止表单重复提交吧?重定向点几次后退不就可以重新提交了吗? 而且把这个归为安全问题貌似太勉强了,应该是概念问题。 是有哪本脑残教材或者视频把重定向和转发拿出来比较了么?感觉几天前还有人在 sf 上问几乎一样的问题。 |
9
misaka19000 2016-06-22 16:29:05 +08:00 1
重定向:基于 HTTP 协议
转发:程序内部的数据转移 |
10
bdbai 2016-06-22 18:26:12 +08:00 via Android
@466934322 这大牛一定不是全栈...你可以找个 PHP 框架,看看它的重定向和 URL 路由分别是怎么用的,自己感受一下。
|
11
yukar 2016-06-24 19:22:35 +08:00 1
轉發:敲門之後直接把人給你找來
重定向:敲門後告訴你那人真實住址 |