You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter3集成hCaptcha提交报SameSite属性未指定错误如何解决

问题根源

你之前给curl请求加SameSite头的操作完全改错了位置,报错来自两个层面:

  • CodeIgniter 3默认配置没有给自身下发的Cookie(包括Session Cookie、业务自定义Cookie)添加SameSite属性,现代浏览器检测到跨站请求中携带无该属性的Cookie时,就会抛出对应提示
  • 你调用hCaptcha验证接口的curl请求默认会自动携带本地存储的Cookie,向hCaptcha域名发起跨站请求时携带了未标记SameSite的Cookie,直接触发了警告
解决步骤

按顺序修改以下配置即可:

1. 修改CI全局Cookie配置

打开application/config/config.php,找到Cookie配置区块,补充/修改以下参数:

// 站点为HTTPS环境时设为TRUE,HTTP环境设为FALSE(注意SameSite=None必须搭配Secure=true使用,生产环境建议全站HTTPS)
$config['cookie_secure'] = TRUE;
$config['cookie_httponly'] = TRUE;
// 新增SameSite配置
$config['cookie_samesite'] = 'None';

2. 修改CI Session Cookie配置

同一个config.php文件中找到Session配置区块,补充以下参数:

$config['sess_secure'] = TRUE;
$config['sess_httponly'] = TRUE;
$config['sess_samesite'] = 'None';

3. 低版本CI/PHP兼容处理

如果你的CI版本低于3.1.11、或者PHP版本低于7.3,框架原生不支持直接读取SameSite配置项,打开站点根目录的入口文件index.php,在加载CI核心代码之前加入以下兼容代码:

// 全局配置Session Cookie的SameSite属性
if (PHP_VERSION_ID >= 70300) {
    session_set_cookie_params([
        'lifetime' => 0,
        'path' => '/',
        'domain' => $_SERVER['HTTP_HOST'],
        'secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
        'httponly' => true,
        'samesite' => 'None'
    ]);
} else {
    ini_set('session.cookie_samesite', 'None');
    ini_set('session.cookie_secure', isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'On' : 'Off');
}

4. 优化hCaptcha验证的curl逻辑

hCaptcha的siteverify是服务端到服务端的接口,不需要携带任何用户Cookie,在你的curl配置中加一行参数,禁止curl自动携带本地无关Cookie:

// 在curl_setopt区块新增这行
curl_setopt($ch, CURLOPT_COOKIEFILE, "");

修改后完整的curl逻辑片段如下:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://hcaptcha.com/siteverify");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 禁止自动携带无关Cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, "");
$response = curl_exec($ch);
注意事项
  • 如果你站点不存在跨站提交表单的场景,可以把SameSite属性值设为Lax,安全性比None更高,不需要强制开启Secure属性(但HTTPS环境还是建议开启Secure)
  • 所有修改完成后,清空浏览器中你站点的所有本地Cookie,重启浏览器再提交表单测试,SameSite属性警告会消失,hCaptcha验证流程可以正常运行

内容的提问来源于stack exchange,提问作者Amben Uchiha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:12:23