今天用ci框架的钩子实现一个例子,在每一次http请求后,在返回报文中的头部header中添加设置跨域访问的属性。
1.启用钩子
钩子特性可以在 application/config/config.php 文件中全局的启用或禁用, 设置下面这个参数:
$config['enable_hooks'] = TRUE;
2.定义钩子
钩子是在 application/config/hooks.php 文件中被定义的,每个钩子可以定义 为下面这样的数组格式:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$hook['post_controller'] = array(
'function' => '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
<?
function hook_resp($params)
{
// $CI =& get_instance();
// $CI->output->set_header("Access-Control-Allow-Origin: * ");
header("Access-Control-Allow-Origin: * ");
}
说明:此方案方便,低耦合,无需要修改controller 及method.
可以随时启用或变更
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。