1

跨域问题一般都是在后端也就是server端处理。先拿java举例,一般是在返回前端时获取response对象,设置返回报文header中Access-Control-Allow-Origin的属性。代码例子为:

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格式的报文

现在看来确实很简单也很相似,但是在解决过程中也遇到一些问题。

错误代码一

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格式的报文

正确代码二

header("Access-Control-Allow-Origin: * "); 
$this->output->set_output(json_encode(array("name" => "hello woody"))); //返回json格式的报文

hellowoody
118 声望10 粉丝

个人网站:woodyhello.com