Tengo una aplicación móvil que utiliza una API para autenticar a un usuario a través de un formulario de inicio de sesión.

Este ha estado trabajando muy bien hasta el día de hoy.. y hoy cuando intento de inicio de sesión me sale el siguiente mensaje en el registro de la consola:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myapp.local/myAppApi/V1/appLogin. 
This can be fixed by moving the resource to the same domain or enabling CORS.

Obviamente necesito habilitar CORS de leer el mensaje, dentro de mi myApiController.php tengo el siguiente código dentro de mi Yii aplicación que creo que debería estar haciendo esto:

protected function _renderJSON($status = 200)
{
    $statusCodeMessage = $this->_getStatusCodeMessage($status);
    header("HTTP/1.1 {$status} {$statusCodeMessage}");

    //allow for Cross Origin Resource Sharing
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
    header("Access-Control-Allow-Headers: Authorization");
    header('Content-type: application/json');
    echo CJSON::encode($this->jsonArray);

    foreach (Yii::app()->log->routes as $route) {
        if ($route instanceof CWebLogRoute) {
            $route->enabled = false; //disable any weblogroutes
        }
    }
    Yii::app()->end();
}

Alguien podría ayudar en como puedo solucionar este problema? La aplicación está hecha con el córdoba marco y de la API que se conecta a través de un PHP app construido usando Yii.

Cualquier consejo se agradece

— UPDATE —
He añadido lo siguiente a mi htaccess que no hay gozo sin embargo

<ifModule mod_headers.c>
 Header set Access-Control-Allow-Origin: *
 Header set Access-Control-Allow-Headers: Authorization
 Header set Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE
</ifModule>

— UPDATE —
He llegado a través de este enlace, que parece útil
https://gist.github.com/sourcec0de/4237402

  • Es el problema que ocurre en un dispositivo real, o sólo cuando las pruebas localmente?
  • Estoy trabajando en mi local de instalación (WAMPServer etc..) sería el virtualhosts información será de ninguna utilidad para usted?
  • Trató de instalación CORS como este en tu wamp server: stackoverflow.com/questions/20442628/cors-jquery-ajax-request, Pero para su implementación real, usted no debería tener el problema, es sólo cuando se debu local que la que tienes derecho?
  • Yo por desgracia sólo se construye la API PHP de modo que no tiene un completo entendimiento de la app html5, afaik los encabezados he añadido debe habilitar CORS como este ha estado trabajando en somepoint (todavía conseguir mi cabeza alrededor de este material)
  • si ejecuto esta ‘app’ a través de un emulador por lo que se ejecuta como por lo que deberá hacer en un iPhone por ejemplo puedo conseguir este cors problema?
  • En el emulador que se puede tener, porque es su equipo tratando de comunicarse con su equipo

InformationsquelleAutor Zabs | 2014-08-20

1 Comentario

  1. 9

    Trate de añadir a continuación el código en la API de controlador de constructor, a mí me funciona.

    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: PUT, GET, POST");
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

Dejar respuesta

Please enter your comment!
Please enter your name here