当前位置:  开发笔记 > 编程语言 > 正文

使用Cookie获取API

如何解决《使用Cookie获取API》经验,为你挑选了4个好方法。

我正在尝试使用新的Fetch API但是遇到了Cookie问题.具体来说,在成功登录后,将来的请求中会有一个Cookie标头,但是Fetch似乎忽略了这些标头,而我使用Fetch发出的所有请求都是未经授权的.

是因为Fetch还没有准备好,或者Fetch不能与Cookies一起使用?

我用Webpack构建我的应用程序.我也在React Native中使用Fetch,它没有相同的问题.



1> Khanetor..:

默认情况下,Fetch不使用cookie.要启用cookie,请执行以下操作:

fetch(url, {
  credentials: "same-origin"
}).then(...).catch(...);


同源不再起作用,包括(参见@Jerry的回答):https://developers.google.com/web/updates/2015/03/introduction-to-fetch
@jpic:'include'仅适用于跨源请求,但不适用于同源请求.官方文档:https://github.com/github/fetch#sending-cookies
我相信`same-origin`(*确实*仍然有用)意味着会尊重更多的标题(cookie等),但是你的代码对访问的访问权限有限.
@JohnBalvinAriasThx。正如我后来所理解的那样,拥有cookie httponly意味着它不能被`document.cookie`读取,但仍可用于ajax或获取请求。

2> zurfyx..:

除了@Khanetor的回答,对于那些处理跨源请求的人: credentials: 'include'

示例JSON获取请求:

fetch(url, {
  method: 'GET',
  credentials: 'include'
})
  .then((response) => response.json())
  .then((json) => {
    console.log('Gotcha');
  }).catch((err) => {
    console.log(err);
});

https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials


你怎么设置cookie?
@Khanetor我可以通过javascript使用document.cookie设置cookie,然后发送请求吗?

3> user1671599..:

刚刚解决了.只有两个f.残酷的日子

对我来说,秘诀在于:

    我打电话给POST/api/auth,看到cookie已成功收到.

    然后调用GET/api/users/credentials: 'include'并获得401 unauth,因为没有cookie与请求一起发送.

KEY也是credentials: 'include'为第一个/ api/auth调用设置的.



4> 小智..:

如果您在2019年阅读此内容,credentials: "same-origin"则为默认值。

fetch(url).then

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有