header(‘Access-Control-Allow-Origin: *’) não funciona no codeigniter

Roberto Cunha
1 min readAug 30, 2016

--

Recentemente estava desenvolvendo um aplicativo mobile com angularjs e precisava salvar alguns dados no mysql. Pensando nisso, resolvi criar uma aplicação codeigniter para receber a solicitação e salvar meus dados.
O problema era que sempre dava um erro quando eu tentava acessar meu controller no codeigniter: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

Como resolver esse problema?
No Controller, no Codeigniter atualize o método construct:

public function __construct()
{
header(‘Access-Control-Allow-Origin: *’);
header(“Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method”);
header(“Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE”);
$method = $_SERVER[‘REQUEST_METHOD’];
if($method == “OPTIONS”) {
die();
}
parent::__construct();
}

E no angularjs, pode enviar os dados para o backend dessa forma:

var user = {
email:'meu@email.com',
password:'meu_password'
}

$http({
method: ‘POST’,
url:'sua_url/seu_controller/seu_método',
data: {email:user.email, password:user.password}
}).then(function(response){
//Usuário adicionado com sucesso
console.log(response)
}, function(error){
console.log(“erro: “+error)
//Ocorreu algum problema ao adicionar usuário
})

E finalmente para capturar a informação enviada pelo $http no codeigniter:

public function meu_backend(){
$request = json_decode( file_get_contents(‘php://input’) );
$email = $request->email;
$password = $request->password;

… //resto do método
}

Esse foi um problema que tive e espero que possa ajudar vocês e facilitar o trabalho na hora de desenvolver com AngularJs e Codeigniter!

Abraço!

--

--