sun*_*unt 6 cookies react-native
我已经使用fetch()登录到服务器,我想知道如何获取cookie。
我知道我可以使用“ document.cookie ”在Web浏览器开发中获取cookie,但是在响应本机开发中如何?非常感谢你。
我只是遇到了同样的问题。我的第一种方法是从响应标题中手动获取cookie。自从Headers.prototype.getAll删除以来,这变得更加困难(请参阅此问题)。详细信息在下面进一步显示。
首先,我要提到的是,下面所有的cookie解析都是不必要的,因为React Nativefetch上的实现会自动发送cookie(如果密钥设置正确)。因此,会话保持不变(就像在浏览器中一样),并且进一步的es可以正常工作。不幸的是,关于网络的React Native文档没有明确告诉您它将立即可用。它只说:“ React Native提供了Fetch API来满足您的网络需求。”credentialsfetch
因此,我编写了一个辅助函数:
// 'headers' is iterable
const get_set_cookies = function(headers) {
const set_cookies = []
for (const [name, value] of headers) {
if (name === "set-cookie") {
set_cookies.push(value)
}
}
return set_cookies
}
fetch(url, {
method: "POST",
credentials: "same-origin", // or 'include' depending on CORS
// ...
})
.then(response => {
const set_cookies = get_set_cookies(response.headers)
})
Run Code Online (Sandbox Code Playgroud)
要将cookie字符串解析为对象,我使用了set-cookie-parser。这样我想像手动发送回饼干
import SetCookieParser from "set-cookie-parser"
const cookies_to_send = set_cookies
.map(cookie => {
const parsed_cookie = SetCookieParser.parse(cookie)
return `${cookie.name}=${cookie.value}`
})
.join('; ')
fetch(url, {
method: "POST",
credentials: "same-origin", // or 'include' depending on CORS
headers: {
Cookie: cookies_to_send,
// ...
},
// ...
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6599 次 |
| 最近记录: |