|
阅读:10207回复:0
[php框架]php ci框架跨域问题:No 'Access-Control-Allow-Origin' header is present on the requested resource
服务器,用的是php ci 框架.
客户端,启的另外一个服务,现在需要调用php服务端的接口。这就出现了跨域问题。 在直接进行访问提示如下信息: No 'Access-Control-Allow-Origin' header is present on the requested resource 百度了下找到了解决方案: 添加如下代码即可. 具体参考:CodeIgniter解决跨域问题 header("Access-Control-Allow-Origin:*"); //允许所有的访问 知道了添加代码,那添加在那个地方呢? 一般是一个一个文件添加,可如何我想都允许,一个一个添加就太麻烦,如何只需要添加在一个地方呢。 有两个方法: 方法一: 添加到程序的入口文件,index.php 或其它文件. 不要添加在某一个具体的控件器 方法二: 控件类里,一般都有继承一个自己定义的基本控制类,可以添加到这个里。 代码如下: 具体控件器的代码: class AdminUser extends MY_Controller { MY_Controller 就是自己定义的基本控制器,在基本控制器里添加一下,对于所有控件器都想进行操作的共同代码。代码如下,其中就包括了header的设置: class MY_Controller extends CI_Controller { public $user; public function __construct() { parent::__construct(); $this->load->database(); // 数据库连接 define('IS_AJAX', $this->input->is_ajax_request()); define('IS_POST', $_SERVER['REQUEST_METHOD'] =='POST' ? TRUE : FALSE); define('SYS_TIME', $_SERVER['REQUEST_TIME'] ? $_SERVER['REQUEST_TIME'] : time()); date_default_timezone_set('Etc/GMT-8'); // 设置中国时区 // header("Access-Control-Allow-Headers:x-requested-with,content-type"); header("Access-Control-Allow-Origin:*"); // if (!in_array($this->router->class, array('user','reset','insInterface','checkUser'))) $this->user = $this->common->is_login(); // 登录会员session //if (!IS_AJAX) $this->output->enable_profiler(TRUE); } } |
|