跨域问题通常都是在后端也就是server端处理。先拿java举例,通常是在返回前端时获取response对象,设置返回报文header中Access-Control-Allow-Origin的属性。代码例子为:php
response().setHeader("Access-Control-Allow-Origin", "*");
说回正题,最近选择codeigniter做为后台server,用ci解决跨域问题大同小异,在controller中,按照下面的代码:前端
header("Access-Control-Allow-Origin: * "); //$this->output->set_header("Access-Control-Allow-Origin: * "); // 这么写也能够,可是我我的推荐第一行的写法 $this->output->set_output(json_encode(array("name" => "hello woody"))); //返回json格式的报文
如今看来确实很简单也很类似,可是在解决过程当中也遇到一些问题。java
错误代码一json
echo 'hello woody'; //在header前使用echo语句,报php语法错误 header("Access-Control-Allow-Origin: * ");
错误代码二后端
echo 'hello woody'; //在$this->output->set_header先后使用echo语句,前端报跨域错误 $this->output->set_header("Access-Control-Allow-Origin: * ");
正确代码一跨域
$this->output->set_header("Access-Control-Allow-Origin: * "); $this->output->set_output(json_encode(array("name" => "hello woody"))); //返回json格式的报文
正确代码二codeigniter
header("Access-Control-Allow-Origin: * "); $this->output->set_output(json_encode(array("name" => "hello woody"))); //返回json格式的报文