lvlv
V2EX  ›  问与答

为啥认证 token 信息要放 HTTP header 里面呢?啥时候开始流行这种认证方式的

  •  
  •   lvlv · Aug 9, 2018 · 13891 views
    This topic created in 3009 days ago, the information mentioned may be changed or developed.

    搜索“ token 放 header ” 看到的大都是 2017-2018 的,以前不是认证信息都放 cookie 吗?如果因为 cookie 不安全,cookie 可以设置 same-site 防止 CSRF 攻击,可以设置 httpOnly 防止 cookie 劫持类攻击,如果说用户有可能禁止 cookie,不是有那种“本网站需要开启 cookie ”的提示吗?

    Supplement 1  ·  Aug 9, 2018
    那个,楼主是做前端的,所以我想问的仅限于有浏览器的情况
    31 replies  •  2018-08-10 11:47:53 +08:00
    geekcorn
    geekcorn
    Aug 9, 2018 via iPhone
    1
    三楼觉得这个如何解释比较好...
    agagega
    agagega
    Aug 9, 2018 via iPhone
    2
    不太明白你的意思,Authorization 字段不是 HTTP 本来的一个用法么
    lianyue
    lianyue
    Aug 9, 2018
    3
    1. 支持跨域 跨域储存
    2. Authorization 字段本来就是用来认证的
    lvlv
    lvlv
    OP
    Aug 9, 2018
    4
    @lianyue 那非 Ajax 请求怎么自动带上这个字段,比如静态资源类请求,毕竟登录之后每个请求都要带上这个认证信息
    @agagega 之前不都是 sessionID 放 cookie 的吗
    yangqi
    yangqi
    Aug 9, 2018
    5
    为什么不呢?
    lianyue
    lianyue
    Aug 9, 2018❤️1
    6
    Authorization 字段一般 是 api 通讯 前后端分离 结构
    请求 静态资源为什么 要带上这个
    mgcnrx11
    mgcnrx11
    Aug 9, 2018 via iPhone❤️1
    7
    客户端不是浏览器就没有 cookie 了呀
    shapl
    shapl
    Aug 9, 2018❤️1
    8
    举个例子,小程序。
    CODEWEA
    CODEWEA
    Aug 9, 2018
    9
    不仅是认证 校验 ajax 成功与否也是利用 header
    moult
    moult
    Aug 9, 2018
    10
    A 公司:我看 B 公司的产品是这样的,我也就这样了。
    B 公司:我看 C 公司的产品是这样的,我也就这样了。
    C 公司:???我觉得这样搞比较好看。!!
    lvlv
    lvlv
    OP
    Aug 9, 2018
    11
    @lianyue 没有通过登录认证的用户不给他网站的静态资源的这种需求应该比较正常吧?
    lvlv
    lvlv
    OP
    Aug 9, 2018
    12
    @shapl
    @mgcnrx11
    好吧,我目前做过的都是需要用浏览器的
    StevenTong
    StevenTong
    Aug 9, 2018
    13
    现在手机 APP 普及了,api 放 cookie 吗?用 Authorization 做 Authenticate 很合适呀
    lvlv
    lvlv
    OP
    Aug 9, 2018
    14
    @CODEWEA 这个是什么意思?没有看明白,Ajax 成功与否不是看`ajax.readyState==4 &&ajax.status==200` 吗?
    Zzdex
    Zzdex
    Aug 9, 2018 via iPhone
    15
    小程序就不支持 cookie
    lvlv
    lvlv
    OP
    Aug 9, 2018
    16
    @Zzdex
    @shapl
    好吧,楼主没做过小程序
    crab
    crab
    Aug 9, 2018
    17
    主要还是跨域问题吧
    gamexg
    gamexg
    Aug 9, 2018 via Android❤️1
    18
    >没有通过登录认证的用户不给他网站的静态资源的这种需求应该比较正常吧?

    @lvlv 这种很少见 cookie 限制的,老方案是普通资源不登陆不提供地址。非法用户猜到地址就可以下载。
    比较重要的资源是真实地址不可访问,直接可访问的是 php 部分,php 验证后通过 nginx 内部重定向到实际文件。这个倒是依赖 cookie。

    现在很多都是使用的对象储存,静态资源在独立域名,真需要限制在 1url 追加签名的比较多。
    CloudnuY
    CloudnuY
    Aug 9, 2018❤️1
    19
    移动端 包括小程序这两年发展导致的吧
    34C
    34C
    Aug 10, 2018 via iPhone
    20
    楼主是多久没有接触现代化前端了… 是不是还在用 jQuery 那种…
    Mutoo
    Mutoo
    Aug 10, 2018❤️1
    21
    cookies 这个 request-header 和 set-cookie 这个 response-header 只能由同域的服务端接收和返回,而大多数的 API 是跨域的。。
    ericls
    ericls
    Aug 10, 2018 via iPhone
    22
    Token 放哪儿都行
    问题是 cookie 跨域什么的 比较麻烦
    suzic
    suzic
    Aug 10, 2018 via Android
    23
    这样比较方便
    mmdsun
    mmdsun
    Aug 10, 2018 via Android
    24
    @lianyue header 里面跨域也要配置吧。
    NullException
    NullException
    Aug 10, 2018❤️1
    25
    RESTFUL API 或者 JWT 了解下? https://www.iluwen.com/blog/43
    cxh116
    cxh116
    Aug 10, 2018❤️1
    26
    有些场景或语言启用 cookies 成本太高,比如 Java ,配置多服务器实例时共享成本比较高.

    所以自己实现,只要根据 header 或 request params 来简单验证即可,而 request param 的方式,使用拦截器之类的方式不能很方便的设置为通用的,而 header 可以很方便的设置为通用默认带上.

    个人理解
    IvanLi127
    IvanLi127
    Aug 10, 2018 via Android
    27
    你的搜索引擎坏了可能。。。一直都有放头部的额
    cjw1115
    cjw1115
    Aug 10, 2018
    28
    @mgcnrx11 有还是有的吧,至少.net 和 java 的 httpClient 还是会保存 cookie 吧,
    whypool
    whypool
    Aug 10, 2018❤️1
    29
    1,前后端独立部署,前端的静态文件弄个 nginx 转发就行了,不涉及后端,这时候用 cookie 就不合适,没有后端服务下发 cookie,所以 token 头拿权限就很重要了

    2,app 内嵌页面,有的是把静态资源一起打包到 app 里面,访问的方式是加载本地路径,协议是 file://,这样本地协议也是拿不到 cookie,所以还是得在请求头里面加权限

    3,对于现在的微服务,一个请求可能需要提供给 web,微信公众号,ios,android 甚至是小程序,这时候用 token 鉴权就很省事了,统一鉴权
    lvlv
    lvlv
    OP
    Aug 10, 2018
    30
    @34C 一年多没接触了,感觉一出来什么都变了😢
    lvlv
    lvlv
    OP
    Aug 10, 2018
    31
    @cxh116
    @NullException
    @Mutoo
    @gamexg
    @whypool
    谢谢,牵涉到后端部署的看不太懂,但是明白了这个做法的必要性,阿里嘎多
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2769 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 14:36 · PVG 22:36 · LAX 06:36 · JFK 09:36
    ♥ Do have faith in what you're doing.