我有一个带有以下代码的快速API,用于设置Cookie:
...
res.setHeader("Access-Control-Allow-Origin", ip);
res.cookie(name, token, { maxAge: 30000, httpOnly: true, secure: false, sameSite: "Lax" });
...
另一个清除cookie:
...
res.clearCookie(name);
...
执行第二个命令时,出现以下错误消息: Cookie“ cookieName”即将被拒绝,因为它的“ sameSite”属性设置为“ none”或在clearCookie上的值无效
一些细节:
有帮助吗?让我知道您是否需要更多详细信息,版本,代码...
答案 0 :(得分:1)
您正面临HTTP问题。一般规则是,设置或删除Cookie时,必须将所有参数设置为相同(值和到期时间除外)。答案https://stackoverflow.com/a/20320610/941493和RFC 6265中描述了解决问题的正确方法。
最后,要删除Cookie,服务器将返回一个Set-Cookie标头,其中包含过去的到期日期。仅当Set-Cookie标头中的Path和Domain属性与创建Cookie时使用的值匹配时,服务器才能成功删除Cookie。
它也写在clearCookie
的文档中:
仅当给定的选项与res.cookie()相同时,Web浏览器和其他兼容客户端才会清除cookie,但expires和maxAge除外。
因此,在您的情况下,请使用过去的cookie
或expires
来调用clearCookie
命令,并使用与创建Cookie相同的参数。
答案 1 :(得分:0)
cookie 和 clearCookie 需要相同的参数。
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
@override
void initState() {
_showDocument();
super.initState();
}
_showDocument() async {
await ui.platformViewRegistry.registerViewFactory(
'ExamplePage',
(int viewId) => IFrameElement()
..src = 'https://example.com'
..style.border = 'none');
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: HtmlElementView(viewType: 'ExamplePage'),
));
}
}