1
qwx 2018-12-13 14:32:16 +08:00
在我的理解中,服务端的重定向分为两种,一种是 redirect,一种是 rewrite,rewrite 是客户端无感知的,就是地址栏不变化。redirect 会给浏览器一个状态码( 301 或 302 ),浏览器实现跳转。客户端重定向我理解的是,状态码虽然是 200,但其内容或 http 头中有跳转指令,浏览器会因为执行相关 js 代码或识别特定 http 头进行跳转操作。
|
2
daijinming OP 在处理第三方用户验证,经常会遇到 重定向的问题,比如接入 CAS、QQ 互联之类的,这种跳转应该都是 服务器 redirect
|
3
goofool 2018-12-13 14:44:16 +08:00
HTTP Redirect 都是协议规定好的,还分什么客户端和服务端吗?你是想问 HTTP Redirect 和服务器调度(Forward)的区别吧
|
4
HanMeiM 2018-12-13 14:44:20 +08:00
QQ 互联、github 这种 OAtuh 的应该先是客户端的跳转,然后请求自己的服务器,服务器重定向到第三方去拿东西
|
5
daijinming OP @goofool 请讲讲
|
6
goofool 2018-12-13 15:27:06 +08:00
|
7
Librazy 2018-12-13 15:30:51 +08:00 via Android
还有一种内部重定向,HSTS 的 307 是客户端内部产生的,从 http 重定向到 https
|
8
t6attack 2018-12-13 15:46:51 +08:00
前者在 http 通道本身 定义,后者在 http 通道内传输的页面 定义。
假设 A/B 两个 url 是两条通道: 前者是 A 通道上标注:此通道转向 B 通道。浏览器看到以后,转向 B 通道。 后者是 A 通道内传输一个页面,浏览器解析该页面,根据解析结果,获知要转向 B 通道。 |
9
t6attack 2018-12-13 15:52:55 +08:00
前者:服务端 、后者:客户端。
|
10
zpf124 2018-12-13 15:58:22 +08:00
听着像是 javaweb 时候讲的 forward 和 Redirect,有些人讲课就爱把这个叫做 服务端重定向 和 客户端重定向。
比如 用户访问 个人中心,如果登录过期了, 这时候有两种处理方式。 1、当前页面返回内容的内容直接就是登录页面, 对于用户来说他 浏览器的访问地址还是 个人中心的 URl,并不知道现在显示的内容是来自于 /login.html 的。(forward) 2、直接返回 302 告诉 客户端 需要去登录页重新登录。 对用户而言,他能看到浏览器跳转页面了,URl 也变成 /login.html 了。(redirect) |
11
wleexi 2018-12-13 15:58:45 +08:00
意思是重定向和转发?
|
12
WordTian 2018-12-13 16:15:45 +08:00 via Android
客户端一般是用 js 跳转
服务端一般是用 301 状态码,加 Location 响应头 |
14
binux 2018-12-13 16:25:26 +08:00 via Android
这是道语文题
|
15
passerbytiny 2018-12-14 09:11:26 +08:00
HTTP 重定向就一个解释,HTTP 状态码 3XX,常见的是 301。浏览器访问 URL 收到 3XX 状态码的时候,需要将当前访问的 URL 替换成新的 URL,是替换不是跳转,所以重定向后是不能返回的。
HTTP 重定向是 HTTP 协议的一部分,只是协议,不是技术。客户端重定向和服务端重定向应该是你框架内部的叫法,是技术方案,跟 HTTP 重定向不是一回事。但是一般来说,提到重定向或 Redirect,指的就是服务器端返回 301 状态码。你这个“服务器端重定向”是个相当不通用的叫法。 |
16
yuedingwangji 2018-12-14 09:25:58 +08:00 via Android
rewrite 状态栏是会变化的 …
|
17
daijinming OP @passerbytiny 再问,在网站上点击 QQ 登录,跳转到 QQ 登录界面,QQ 登录成功后再跳转回来,应该不是重定向是吗?
|
18
passerbytiny 2018-12-14 10:55:33 +08:00
@daijinming #14 点击登录不是重定向,登陆成功后跳回来是重定向,服务器判定登录成功后,回发送 http301 的。
|
19
daijinming OP @passerbytiny #18 服务器判定登录成功后,回发送 http301 的,浏览器收到后是不是还是要发出 HTTP 请求到当前功能网站那?
|
20
jimzhong 2018-12-14 12:01:57 +08:00
@daijinming 是。打开开发者工具的“网络”卡就能看到。
|
21
xzsljc 2021-08-01 21:48:48 +08:00
还有一种内部重定向,HSTS 的 307 是客户端内部产生的,从 http 重定向到 https
|