Javascript 脚本无法读取Cookie
我正在尝试使用Javascript 脚本无法读取Cookie,javascript,reactjs,google-chrome,cookies,flask,Javascript,Reactjs,Google Chrome,Cookies,Flask,我正在尝试使用jscookie包通过以下Javascript代码从浏览器读取cookie。但是,未读取cookie import Cookies from 'js-cookie'; var cookie_name = 'cookie'; var cookie = Cookies.get(cookie_name); console.log(cookie); cookie是使用下面利用Flask的Python代码创建的 response.headers.add('Access-Control-Al
jscookie
包通过以下Javascript代码从浏览器读取cookie。但是,未读取cookie
import Cookies from 'js-cookie';
var cookie_name = 'cookie';
var cookie = Cookies.get(cookie_name);
console.log(cookie);
cookie是使用下面利用Flask
的Python代码创建的
response.headers.add('Access-Control-Allow-Headers', 'Content-Type, text/plain')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
response.headers.add('Access-Control-Allow-Credentials', 'true')
response.set_cookie(key='cookie',
value=payload,
domain='<url>')
上面我已经关闭了
HttpOnly
标志,因此我的脚本应该能够读取cookie。我也无法在浏览器中使用console.log(document.cookie)
查看cookie。我的JS代码无法读取cookie有什么原因吗?您应该使用“react cookie”,通过npm安装它。然后在组件中尝试导入带有cookies的HOC
import { withCookies } from 'react-cookie';
通过密钥获取cookies绑定
function getCookieFucnctionTest(myRecordFromCookies) {
var value = "; " + document.cookie;
var parts = value.split("; " + myRecordFromCookies+ "=");
if (parts.length === 2) return parts.pop().split(";").shift();
}
使用GetCookieFunctionTest并将其转换为参数后
使用HOC命令导出组件
export default withCookies(MyComponent);
如果在浏览器控制台中看不到cookie,则表示未设置cookie或仅使用HTTP设置cookie
SESSION\u COOKIE\u HTTPONLY
只应影响Flask设置的会话COOKIE,看起来您正在尝试完全设置不同的COOKIE
我想:
response.set\u cookie(key='cookie',value=payload,domain=,httponly=False)
您无法通过console.log(document.cookies)查看cookie,这可能表明cookie的域或路径与浏览器试图访问的内容不匹配
例如:如果您的后端/Flask应用程序在api.example.com:8080上运行,而客户端使用的是www.example.com:80,那么您需要显式地将域设置为.example.com
,以便在您的域上全局可读,并且在您的AJAX请求上设置cookie时,您可能会发生CORS错误,您可能需要将以下标题添加到烧瓶:
response.headers.add('Access-Control-Allow-Headers', 'Content-Type, Set-Cookie')
response.headers.add('Access-Control-Allow-Origin', 'http://www.example.com')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
response.headers.add('Access-Control-Allow-Credentials', 'true')
response.set_cookie(key='cookie',
value=payload,
domain='.example.com')
您还可以强制执行
path='/'
,但默认情况下,Flask会这样做,在任何情况下,您都应该能够在屏幕Application>Cookies
(如果路径设置不正确console.log(document.Cookies))下的DevTools上看到您的cookie,即使路径不同,但设置在同一域上
不会产生任何结果,或者可能会删除您要查找的cookie)Cookies
不是有效的浏览器api。cookie总是通过document.Cookies来获取/设置。@Geuis,似乎他在使用react cookie
@Geuis我在使用js cookie
库你是如何构建flask响应的?后端和前端是否托管在不同的服务器/域上?由于简单,我想使用js cookie
库。此外,由于浏览器上未检测到cookie,因此切换包也没有帮助。不清楚为什么不能通过脚本读取此cookie,因为烧瓶设置应该允许它可读
response.set_cookie(key='cookie', value=payload, domain=<url>, httponly=False)
response.headers.add('Access-Control-Allow-Headers', 'Content-Type, Set-Cookie')
response.headers.add('Access-Control-Allow-Origin', 'http://www.example.com')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
response.headers.add('Access-Control-Allow-Credentials', 'true')
response.set_cookie(key='cookie',
value=payload,
domain='.example.com')