跨域问题一般都是在后端也就是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格式的报文
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。