首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

fetch api 在浏览器内无法保存和发送 cookie?

  •  
  •   FaiChou · 236 天前 · 630 次点击
    这是一个创建于 236 天前的主题,其中的信息可能已经有所发展或是发生改变。

    应该是使用姿势有问题, 特来请教.

    网上的答案有:

    1. 需要设置 credentials: 'include' ✅
    2. 跨域需要设置 Access-Control-Allow-Credentials: true ✅
    3. 跨域需要设置 Access-Control-Allow-Origin: http://localhost:3000 ✅

    这三个都设置的正常:

    fetch(COR_API, {
      credentials: 'include',
      method: 'POST',
      body: ...
      headers: {'Accept': 'application/json'}
    })
    

    chrome

    在 chrome-devtool 中没有 Set-Cookie 字段.

    在 Safari 和 Firefox 中会有 Set-Cookie 字段, 但是不会保存 cookie.

    使用 postman 测试, 发现是正常的, 第二次请求会带上第一次的 cookies.

    postman

    SO 上的提问

    4 回复  |  直到 2018-12-24 20:35:49 +08:00
        1
    FaiChou   236 天前
    附上 Safari 的 response

        2
    FaiChou   236 天前
    使用 axios 也是一样的结果..
        3
    FaiChou   236 天前
    哈哈哈哈 😂

    结果是 server 把 cookie 的过期时间设置错了, 服务器时间和本地时间差 8 小时.. i18n

    No one can save my day..
        4
    FaiChou   236 天前
    哦.. 不是三楼的答案.. 而是 因为浏览器禁止了第三方 cookie, 需要手动打开. chrome 和 Safari 是这样的.

    而且在手机上也是禁止第三方 cookie..

    没啥好办法么? 那 h5 页面咋办呢? 只能改成 token 验证吗?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   865 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 22:36 · PVG 06:36 · LAX 15:36 · JFK 18:36
    ♥ Do have faith in what you're doing.