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

如何在CodeIgniter 3中配置Content-Security-Policy响应头?

在CodeIgniter 3中设置Content-Security-Policy响应头的解决方案

你的代码存在两处问题导致未生效,以下是修正方案及其他可行的实现方式:

一、修正控制器中的代码

CI3 的$this->output->set_header()方法仅接受单个参数,需将响应头名称与值合并为一个字符串传入;同时你拼写错误了'unsafe-inline'(写成了'unsafe-inine'),修正后的代码如下:

// 在控制器的__construct方法或具体业务方法中
$this->output->set_header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';");

二、通过钩子全局设置(推荐)

若需要全站生效,无需在每个控制器重复编写代码,可使用CI3的钩子功能:

  1. 打开application/config/config.php,启用钩子:
$config['enable_hooks'] = TRUE;
  1. 打开application/config/hooks.php,添加钩子配置:
$hook['post_controller_constructor'][] = array(
    'function' => 'set_csp_header',
    'filename' => 'CspHook.php',
    'filepath' => 'hooks'
);
  1. 在application/hooks/目录下创建CspHook.php文件,写入内容:
<?php
function set_csp_header() {
    $CI =& get_instance();
    $CI->output->set_header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';");
}

三、通过.htaccess设置(Apache服务器)

如果你的服务器是Apache,可直接在项目根目录的.htaccess中添加以下代码:

Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline';"

验证生效状态

打开浏览器开发者工具(F12),切换到「网络」标签,刷新页面后查看对应请求的「响应头」,确认是否存在Content-Security-Policy字段。

内容的提问来源于stack exchange,提问作者Shubham Nayak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:52:37