【问题标题】:delete cookie in jQuery on page refresh in Laravel在 Laravel 的页面刷新时删除 jQuery 中的 cookie
【发布时间】:2015-12-08 08:02:24
【问题描述】:

我试图在页面刷新时删除一个 cookie,但我无法实现它。到目前为止我已经这样做了

//delete the cookie on page refresh
window.onunload = unloadPage;
function unloadPage()
{
    $.removeCookie('count', { path: '/' });
}

此代码位于我的 js 文件的顶部。 我也尝试过stackoverflow

更新 我正在使用 laravel,我正在使用此代码来设置 cookie

$response->withCookie(cookie()->forever('count', $count));

【问题讨论】:

  • 你有一个叫removeCookie的插件吗?
  • 我怀疑您在删除 javascript 中的 cookie 时遇到问题,因为它设置为 httpOnly。您可以在资源选项卡上的 chrome 检查器中轻松检查。 cookie 列表的 HTTP 列会有一个复选标记。

标签: javascript jquery cookies laravel-5.1


【解决方案1】:
document.cookie = 'count=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';

【讨论】:

  • 很遗憾,这并没有删除 cookie。
  • btw cookie 正在由 php 设置,我想在 jQuery 中删除它
  • 从哪里设置cookie都没有关系,仍然在客户端 - 浏览器中。
【解决方案2】:

所以,我不得不走这条路来删除cookie

//delete the cookie on page refresh
    $.ajax({
        url:'remove-cookie',
        method:'post',
        success: function(){
            console.log("cookie deleted");
        }
    });

在我的控制器方法中

/**
     * delete the count cookie
     */
    public function destroyCookie(){
        $cookie = Cookie::forget('count');
        $response = new Response($cookie);
        $response->withCookie($cookie);

        return $response;
    }

路线是

Route::post('remove-cookie', 'DonnerController@destroyCookie');

我希望它可以帮助使用 laravel 的人。

【讨论】:

    【解决方案3】:

    你不需要使用unload事件,因为每次刷新时,你的header中包含的每个脚本都会从上到下执行。

    因此,您只需在脚本顶部进行简单检查,以验证当前 URL 是否与之前相同,以确保页面确实已刷新。

    这是一个示例(未测试):

    if (document.referrer == window.location.href) {
        // The page was refreshed.
    }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多