zoukankan      html  css  js  c++  java
  • yiiaseInvalidCallException The cookie collection is read only.

    Invalid Call – yiiaseInvalidCallException

    The cookie collection is read only.

    在使用Yii2进行cookie操作时会报以上错误多半是使用了如下的方式来获取cookie容器而导致的

    $cookieObj = Yii::$app->request->cookies;

    处理方式有两种:

    第一种方式,设置readOnly属性为false:
    处理方式为:

    $cookieObj->readOnly = false; //关闭只读保护

    第二种方式,使用response来实例化cookie容器

    $cookie = Yii::$app->response->cookies;
    $cookie->add(new Cookie([
    'name' => 'goods_cart',
    'value' => '100'
    ]));


    导致这个问题的原因是request和response实例化的容器中的readOnly属性的值不同,分别打印的结果如下:

    $cookieObj = Yii::$app->request->cookies;
    var_dump($cookieObj);


    $cookie = Yii::$app->response->cookies;
    var_dump($cookie);exit;


    object(yiiwebCookieCollection)#56 (2) { ["readOnly"]=> bool(true) ["_cookies":"yiiwebCookieCollection":private]=> array(1) { ["_csrf-frontend"]=> object(yiiwebCookie)#63 (7) { ["name"]=> string(14) "_csrf-frontend" ["value"]=> string(32) "JE6d52sN6RdCai-RNDGVYrfpKQ1p0W5_" ["domain"]=> string(0) "" ["expire"]=> NULL ["path"]=> string(1) "/" ["secure"]=> bool(false) ["httpOnly"]=> bool(true) } } }

    object(yiiwebCookieCollection)#65 (2) { ["readOnly"]=> bool(false) ["_cookies":"yiiwebCookieCollection":private]=> array(0) { } }


    可以看到response默认为true这也是为了cookie安全考虑一个为有加密的值。

  • 相关阅读:
    TX2--安装跑一python3.5
    luogu P4762 [CERC2014]Virus synthesis (回文自动机)
    牛客 128A 礼物 (组合计数)
    后缀自动机学习
    Codeforces Round #309 (Div. 1)
    Vanya and Scales CodeForces
    5-45 航空公司VIP客户查询 (25分) HASH
    转载 字符串hash
    5-15 QQ帐户的申请与登陆 (25分) HASH
    5-14 电话聊天狂人 (25分) HASH
  • 原文地址:https://www.cnblogs.com/bluealine/p/11339006.html
Copyright © 2011-2022 走看看