首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

谁对 HTTP 的重定向理解比较熟悉,能不能讲解下客户端重定向和服务端重定向有什么异同

  •  
  •   daijinming · 71 天前 · 1336 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。
    20 回复  |  直到 2018-12-14 12:01:57 +08:00
        1
    qwx   71 天前
    在我的理解中,服务端的重定向分为两种,一种是 redirect,一种是 rewrite,rewrite 是客户端无感知的,就是地址栏不变化。redirect 会给浏览器一个状态码( 301 或 302 ),浏览器实现跳转。客户端重定向我理解的是,状态码虽然是 200,但其内容或 http 头中有跳转指令,浏览器会因为执行相关 js 代码或识别特定 http 头进行跳转操作。
        2
    daijinming   71 天前
    在处理第三方用户验证,经常会遇到 重定向的问题,比如接入 CAS、QQ 互联之类的,这种跳转应该都是 服务器 redirect
        3
    goofool   71 天前
    HTTP Redirect 都是协议规定好的,还分什么客户端和服务端吗?你是想问 HTTP Redirect 和服务器调度(Forward)的区别吧
        4
    HanMeiM   71 天前
    QQ 互联、github 这种 OAtuh 的应该先是客户端的跳转,然后请求自己的服务器,服务器重定向到第三方去拿东西
        5
    daijinming   71 天前
    @goofool 请讲讲
        7
    Librazy   71 天前 via Android
    还有一种内部重定向,HSTS 的 307 是客户端内部产生的,从 http 重定向到 https
        8
    t6attack   71 天前
    前者在 http 通道本身 定义,后者在 http 通道内传输的页面 定义。

    假设 A/B 两个 url 是两条通道:
    前者是 A 通道上标注:此通道转向 B 通道。浏览器看到以后,转向 B 通道。
    后者是 A 通道内传输一个页面,浏览器解析该页面,根据解析结果,获知要转向 B 通道。
        9
    t6attack   71 天前
    前者:服务端 、后者:客户端。
        10
    zpf124   71 天前
    听着像是 javaweb 时候讲的 forward 和 Redirect,有些人讲课就爱把这个叫做 服务端重定向 和 客户端重定向。

    比如 用户访问 个人中心,如果登录过期了, 这时候有两种处理方式。

    1、当前页面返回内容的内容直接就是登录页面, 对于用户来说他 浏览器的访问地址还是 个人中心的 URl,并不知道现在显示的内容是来自于 /login.html 的。(forward)

    2、直接返回 302 告诉 客户端 需要去登录页重新登录。 对用户而言,他能看到浏览器跳转页面了,URl 也变成 /login.html 了。(redirect)
        11
    wleexi   71 天前
    意思是重定向和转发?
        12
    WordTian   71 天前 via Android
    客户端一般是用 js 跳转
    服务端一般是用 301 状态码,加 Location 响应头
        13
    WordTian   71 天前 via Android
    @WordTian 噢,是 30x 状态码
        14
    binux   71 天前 via Android
    这是道语文题
        15
    passerbytiny   70 天前
    HTTP 重定向就一个解释,HTTP 状态码 3XX,常见的是 301。浏览器访问 URL 收到 3XX 状态码的时候,需要将当前访问的 URL 替换成新的 URL,是替换不是跳转,所以重定向后是不能返回的。

    HTTP 重定向是 HTTP 协议的一部分,只是协议,不是技术。客户端重定向和服务端重定向应该是你框架内部的叫法,是技术方案,跟 HTTP 重定向不是一回事。但是一般来说,提到重定向或 Redirect,指的就是服务器端返回 301 状态码。你这个“服务器端重定向”是个相当不通用的叫法。
        16
    yuedingwangji   70 天前 via Android
    rewrite 状态栏是会变化的 …
        17
    daijinming   70 天前
    @passerbytiny 再问,在网站上点击 QQ 登录,跳转到 QQ 登录界面,QQ 登录成功后再跳转回来,应该不是重定向是吗?
        18
    passerbytiny   70 天前
    @daijinming #14 点击登录不是重定向,登陆成功后跳回来是重定向,服务器判定登录成功后,回发送 http301 的。
        19
    daijinming   70 天前
    @passerbytiny #18 服务器判定登录成功后,回发送 http301 的,浏览器收到后是不是还是要发出 HTTP 请求到当前功能网站那?
        20
    jimzhong   70 天前
    @daijinming 是。打开开发者工具的“网络”卡就能看到。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1038 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 18:31 · PVG 02:31 · LAX 10:31 · JFK 13:31
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1