Saltar al contenido

habilitando cors en codeigniter (restserver por @chriskacerguis)

Nuestros programadores estrellas agotaron sus provisiones de café, por su búsqueda todo el tiempo por la resolución, hasta que Fabián encontró la solución en Beanstalk y en este momento la compartimos con nosotros.

Solución:

Intenta agregar OPTIONS a los métodos permitidos.

header("Access-Control-Allow-Methods: GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding");

y regrese inmediatamente cuando la solicitud sea el método ‘OPCIONES’ una vez que haya configurado los encabezados.

if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) 
    die();

Véase también esta respuesta.

Angular envía una solicitud de verificación previa compatible con la especificación W3C CORS que verificará los métodos permitidos correctos antes de intentarlo.

Personalmente, creo que la página CORS de Mozilla Developer Network es un poco más fácil de leer sobre el tema para ayudar a comprender el flujo de CORS.

Si alguien más enfrenta el problema, me funcionó habilitar CORS en el archivo rest.php de Codeigniter REST Controller. Esto también está claramente documentado en los comentarios aquí https://github.com/chriskacerguis/codeigniter-restserver/blob/master/application/config/rest.php

//Change this to TRUE
$config['check_cors'] = TRUE;

//No change here
$config['allowed_cors_headers'] = [
  'Origin',
  'X-Requested-With',
  'Content-Type',
  'Accept',
  'Access-Control-Request-Method',
  'Authorization',
];

//No change here
$config['allowed_cors_methods'] = [
  'GET',
  'POST',
  'OPTIONS',
  'PUT',
  'PATCH',
  'DELETE'
];

//Set to TRUE to enable Cross-Origin Resource Sharing (CORS) from any source domain
$config['allow_any_cors_domain'] = TRUE;


//Used if $config['check_cors'] is set to TRUE and $config['allow_any_cors_domain'] is set to FALSE. 
//Set all the allowable domains within the array
//e.g. $config['allowed_origins'] =['http://www.example.com','https://spa.example.com']

$config['allowed_cors_origins'] = [];

He agregado el siguiente constructor en mi clase de controlador

public function __construct($config = 'rest')

    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
    parent::__construct();

Te invitamos a corroborar nuestro trabajo escribiendo un comentario o dejando una puntuación te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *