sunshine
管理员
管理员
  • 最后登录2023-10-30
  • 发帖数170
  • 社区居民
阅读:10207回复:0

[php框架]php ci框架跨域问题:No 'Access-Control-Allow-Origin' header is present on the requested resource

楼主#
更多 发布于:2018-01-14 16:44
服务器,用的是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);
         }
}
游客


返回顶部

公众号

公众号