无法在 symfony 中删除 cookie

Posted

技术标签:

【中文标题】无法在 symfony 中删除 cookie【英文标题】:Trouble deleting cookies within symfony 【发布时间】:2012-10-20 03:47:52 【问题描述】:

我有一个使用 jquery 的 php 文件。如果在按下提交按钮后选中了一个复选框,我有这个文件存储 cookie,如果未选中该复选框,则删除 cookie(如果它们存在)。

它在我没有 symfony 的开发服务器上运行良好。当我将它传输到我们的实时服务器时,这需要我将代码放在 symfony 中,它会保存 cookie 但不会删除它们。我正在使用来自这里的 jquery.cookies.js LINK

我的代码很简单

                   // else delete the cookies if the checkbox is unchecked
                    else
                    
                        ?>
                         <script type="text/javascript">
                            $.removeCookie('vtuid');
                            $.removeCookie('vt_usr');
                            $.removeCookie('vt_pd');
                            $.removeCookie('vt_chk');
                        </script>
                        <?php
                    

【问题讨论】:

【参考方案1】:

你也可以这样做

 $response = new Symfony\Component\HttpFoundation\Response();
 $response->headers->clearCookie('nameOfTheCookie');
 $response->send();

不要忘记按照 cookie 被删除的顺序发回响应

【讨论】:

【参考方案2】:

在 Symfony 中设置 cookie 的完整文档在这里: http://symfony.com/doc/current/components/http_foundation/introduction.html#setting-cookies

API 文档中描述了清除 cookie: http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/ResponseHeaderBag.html#method_clearCookie

【讨论】:

【参考方案3】:

B 默认 symfony 只设置带有 http 标志的 cookie,这意味着 - 你不能从 js 中删除 cookie。 例如:

$response->headers->setCookie(new Cookie('blabla', 'true', time() + (3600 * 48), '/', null, false, false));

【讨论】:

好吧,我想是这样的。我所做的解决方法是将同名的 cookie 设置为空值,以便在会话结束后将它们删除。

以上是关于无法在 symfony 中删除 cookie的主要内容,如果未能解决你的问题,请参考以下文章

无法删除名为默认连接的数据库`symfony-project`驱动程序中发生异常:SQLSTATE [HY000] [2002]连接被拒绝

Symfony2 嵌入式表单删除按钮功能

Symfony 4 - 连接时删除您自己的用户帐户的好习惯

symfony 5 从 url 中删除 public

Symfony ServiceContainer在编译后删除服务

在symfony项目中使用ajax来删除项目