今天用ci框架的钩子实现一个例子,在每一次http请求后,在返回报文中的头部header中添加设置跨域访问的属性。
1.启用钩子
钩子特性可以在 application/config/config.php 文件中全局的启用或禁用, 设置下面这个参数:
$config['enable_hooks'] = TRUE;
2.定义钩子
钩子是在 application/config/hooks.php 文件中被定义的,每个钩子可以定义 为下面这样的数组格式:
'hook_resp', 'filename'=> 'resp.php', 'filepath' => 'hooks', 'params' => array(),);
post_controller 在你的控制器完全运行结束时执行。也就是controller在每一次处理http请求后执行。
function 你希望调用的方法或函数的名称。
filename 包含你的类或函数的文件名。
filepath 包含你的脚本文件的目录名。 注意: 你的脚本必须放在
application/ 目录里面,所以 filepath 是相对 application/ 目录的路径,举例来说,如果你的脚本位于
application/hooks/ ,那么 filepath 可以简单的设置为 'hooks' ,如果你的脚本位于
application/hooks/utilities/ , 那么 filepath 可以设置为 'hooks/utilities'
,路径后面不用加斜线。params 你希望传递给你脚本的任何参数,可选。
3.创建自定义钩子文件
在system/application/hooks中新增文件resp.php
output->set_header("Access-Control-Allow-Origin: * "); header("Access-Control-Allow-Origin: * ");}
说明:此方案方便,低耦合,无需要修改controller 及method.
可以随时启用或变更