Invalid Call – yii\base\InvalidCallException

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(yii\web\CookieCollection)#56 (2) { ["readOnly"]=> bool(true) ["_cookies":"yii\web\CookieCollection":private]=> array(1) { ["_csrf-frontend"]=> object(yii\web\Cookie)#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(yii\web\CookieCollection)#65 (2) { ["readOnly"]=> bool(false) ["_cookies":"yii\web\CookieCollection":private]=> array(0) { } }

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

最新文章

  1. Python Day6
  2. jquery特效大全
  3. linux命令:head
  4. Node.js初探之hello world
  5. 详解log4j2(下) - Async/MongoDB/Flume Appender 按日志级别区分文件输出
  6. iOS 内存管理(一)之基础知识介绍
  7. pthread 学习系列 case1-- 共享进程数据 VS 进程
  8. MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析
  9. C# WinForm开发系列 - RDLC
  10. Oracle 日期查询
  11. 树状数组的笔记√(hzwer blog)
  12. HDU 5775 Bubble Sort(线段树)(2016 Multi-University Training Contest 4 1012)
  13. Leetcode: Spiral Matrix. Java
  14. COM学习(二)——COM的注册和卸载
  15. 第一次作业_ChenHong1998
  16. iframe 和 父窗口传递
  17. 在html中使用thymeleaf编写通用模块
  18. maven 创建project
  19. ES6 WeakMap和WeakSet的使用场景
  20. Python标准库 -- UUID模块(生成唯一标识)

热门文章

  1. 架构模式: 服务前端的后端(BFF模式)
  2. 【VS开发】C语言遍历文件夹
  3. 【VS开发】VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
  4. 【FFMPEG】ffmpeg 时间戳问题汇总
  5. JAVA -----------交互式程序
  6. speedtest-cli 命令
  7. 2019icpc银川网络赛
  8. Python +requests 关于post请求返回报错
  9. centos 服务器 发开防火墙端口
  10. mybatis 主键自增异常