我正在尝试使用IF OBJECT_ID('dbo.checks', 'U') IS NOT NULL
DROP TABLE dbo.checks;
CREATE TABLE checks (
queries int primary key identity(1,1),
Payee varchar(30),
Amount decimal(5,2),
Remarks varchar(50)
);
# followed by insert
包通过以下Javascript代码从浏览器中读取Cookie。但是,cookie未被读取。
js-cookie
使用以下使用import Cookies from 'js-cookie';
var cookie_name = 'cookie';
var cookie = Cookies.get(cookie_name);
console.log(cookie);
的Python代码创建cookie。
Flask
Flask应用程序具有以下参数
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>')
以上,我已经关闭了app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SESSION_COOKIE_HTTPONLY'] = False
标志,因此我的脚本应该能够读取cookie。我也无法在浏览器中使用HttpOnly
来查看Cookie。有什么原因导致我的JS代码无法读取Cookie?
答案 0 :(得分:0)
您应该使用“ react-cookie”,并通过npm安装它。然后在您的组件中尝试使用Cookie导入HOC
import { withCookies } from 'react-cookie';
通过键获取cookie绑定
function getCookieFucnctionTest(myRecordFromCookies) {
var value = "; " + document.cookie;
var parts = value.split("; " + myRecordFromCookies+ "=");
if (parts.length === 2) return parts.pop().split(";").shift();
}
在使用getCookieFucnctionTest并将其存储为参数后
使用HOC导出组件
export default withCookies(MyComponent);
答案 1 :(得分:0)
如果您无法在浏览器控制台中看到该cookie,则表示该cookie未被设置或仅通过HTTP设置。
SESSION_COOKIE_HTTPONLY
仅会影响Flask设置的会话cookie,看来您正在尝试完全设置其他cookie。
我会
...
response.set_cookie(key='cookie', value=payload, domain=<url>, httponly=False)
答案 2 :(得分:0)
您无法通过console.log(document.cookies)
查看cookie的事实可能表明cookie的域或路径与浏览器试图访问的内容不匹配。
EG:如果您的后端/ Flask应用程序在api.example.com:8080上运行,并且客户端使用www.example.com:80,则您需要将域显式设置为.example.com
以使其可读在您的域中进行全局设置,同时在AJAX请求上设置Cookie时也可能会导致CORS错误,您可能需要向Flask添加以下标头:
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似乎默认会执行此操作,无论如何,即使在路径不同的情况下,您也应该能够看到Cookie,但您可以在设置的DevTools上的相同域上进行设置屏幕Application > Cookies
(如果路径设置不正确,console.log(document.cookies)
不会产生任何结果,或者可能会剥夺您想要的Cookie)