讲师中心 微信公众号
AI工具推荐 视频效率加速

CodeIgniter4基础教程:Cookie与跨域设置

老芳君_2973

老芳君_2973

发布时间:2026-08-08 14:54:38

|

645人浏览过

|

来源于php中文网

原创

CodeIgniter 4 安全创建和发送 Cookie 需显式配置 secure=false(开发环境)、cookie_path='/’,并用 $response->setCookie() 发送;跨域预检需 CorsFilter 返回 200 并设全量 CORS 头;Vite 代理需 changeOrigin: true 且前端请求用 /api 路径。

codeigniter4基础教程:cookie与跨域设置

CodeIgniter 4 怎么安全创建和发送 Cookie

CI4 的 Cookie 类不是简单 setcookie() 封装,它默认启用 Secure、HttpOnly 和 SameSite=Lax,但这些行为必须匹配实际部署环境,否则 Cookie 在浏览器里根本不会被存储或发送。

  • 开发时若用 http://localhost(非 HTTPS),必须显式关掉 secure:传入 ['secure' => false],否则 Chrome/Firefox 直接忽略该 Cookie
  • cookie_path 必须设为 '/',尤其在多语言子路径(如 /zh/)场景下;设成 '/zh/' 会导致切换语言后 Cookie 不随请求发出
  • 若前端带凭证(如 fetch(..., { credentials: 'include' })),后端响应必须含 Access-Control-Allow-Credentials: true,且此时 Access-Control-Allow-Origin 不能是 *,得写死前端域名(如 http://localhost:5173)
  • 用 cookie() 辅助函数创建 Cookie 时,它只构造对象,不自动发送;必须配合 $response->setCookie($cookie) 才生效

为什么 CI4 跨域请求总卡在 OPTIONS 预检

这不是 CI4 的 bug,而是浏览器强制执行的 CORS 预检机制 —— 只要请求含自定义头(如 Authorization)、非简单方法(如 PUT)、或 Content-Type 为 application/json,就先发一个 OPTIONS 请求试探后端是否允许。CI4 默认不处理 OPTIONS,直接 404 或 500,前端就卡住。

NotebookLM CLI Cookies
NotebookLM CLI Cookies

使用 nlm CLI 检索并回答已上传至 NotebookLM 的文档问题。适用于用户需要查找信息、总结来源或查询特定笔记本时。

下载
  • 最稳做法:写个 CorsFilter,在 app/Filters/CorsFilter.php 里对 OPTIONS 请求直接返回 200,并设置 Access-Control-Allow-Methods、Access-Control-Allow-Headers 等头
  • 别在控制器里手动 header(),因为 CI4 响应生命周期中,header() 可能被后续中间件覆盖或触发“headers already sent”错误
  • Access-Control-Allow-Headers 必须明确列出前端实际用的头,比如 Authorization,X-Requested-With,Content-Type;写 * 在带凭据时无效
  • 生产环境别留 Access-Control-Allow-Origin: *,它和 credentials: true 冲突,浏览器会直接拒绝响应

Vite 开发时怎么让 /api 请求不跨域

本地开发阶段,代理比改后端 CORS 更干净——浏览器根本不知道有跨域这回事,所有请求都发给 http://localhost:5173(Vite 地址),Vite 自动把 /api/ 开头的请求转发到 CI4(比如 http://localhost:8000)。

  • Vite 配置里 server.proxy 必须设 changeOrigin: true,否则 CI4 收到的 Host 头还是 localhost:5173,可能触发域名白名单拦截
  • 前端代码里所有 API 路径写相对路径:axios.get('/api/users'),而不是 axios.get('http://localhost:8000/api/users')
  • CI4 启动命令别用 php spark serve 绑定 127.0.0.1,改用 php spark serve --host 0.0.0.0,否则 Vite 代理连不到
  • 代理只在开发生效,打包后的 dist 目录上线必须配 Nginx 反向代理,否则静态资源和 API 会分属不同域名

CI4 控制器里怎么读取和验证 Cookie

CI4 的 $this->request->getCookie() 只读原始值,不校验签名;真正安全的读取方式是用 $this->response->getCookie() 或服务容器里的 Cookie 实例,它们会自动校验 __ci_last_regenerate 和加密签名。

  • 不要用 $_COOKIE['xxx'] 直接读,它绕过 CI4 的加密/签名机制,容易被篡改
  • 若 Cookie 是用 cookie()->withValue(...)->withPrefix('__Secure-') 创建的,读取时必须用相同 prefix:$this->request->getCookie('remember_token', '__Secure-')
  • CSRF token 默认也存在 Cookie 里(csrf_cookie_name),前后端分离时,前端需在请求头带上这个值:headers: { 'X-CSRF-TOKEN': cookieValue },CI4 才会放行 POST/PUT/DELETE
  • Cookie 过期时间由服务端控制,但浏览器也可能因隐私策略(如 Safari ITP)提前丢弃第三方 Cookie,别依赖它做长期登录态
跨域和 Cookie 的坑不在配置项本身,而在它们之间的隐性耦合:credentials 开关、SameSite 策略、Secure 标志、甚至前端 fetch 的 mode 选项,任意一环没对齐,整条链就断。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

12239

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1206

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

844

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1926

2025.08.19

PHP CodeIgniter框架
PHP CodeIgniter框架

本专题专注于 PHP 轻量级框架 CodeIgniter 的学习与应用,系统讲解 MVC 模型、路由与控制器、数据库操作、表单验证、安全机制以及 REST API 开发。通过博客系统、内容管理平台和小型电商等实战项目,帮助学员快速掌握 CodeIgniter 的开发方法与实践技能。

3779

2025.08.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

120

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

60

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

60

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

40

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn