Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: $francisco en Febrero 17, 2016, 05:50:34 PM

Título: [SOLUCIONADO]Error en Ajax:"falta la cabecera CORS 'Access-Control-Allow-Origin"
Publicado por: $francisco en Febrero 17, 2016, 05:50:34 PM
Muy buenas, tengo este error al realizar una peticion ajax pero no logro poder hacerla y en google siempre me dice lo mismo y no funciona.

Código (php) [Seleccionar]
header("Access-Control-Allow-Origin: *");

mi archivo ajax:

Código (javascript) [Seleccionar]
$(document).ready(function(){
$.ajax({
url:'http://miweb.eshost.com.ar/index.php',
method:'POST',
dataType:'json',
})
.done(function(data){
var text = $(data).find("cite").text();
$("#content").text(text);

})
.fail(function(){alert("fail");})
});


mi archivo php.

Código (html5) [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>

</head>
<body>
<?php
header
("Access-Control-Allow-Origin: *");
echo 
"hola";
?>

</body>
</html>


y el error completo

Solicitud desde otro origen bloqueada: la política de mismo origen impide leer el recurso remoto en http://services.eshost.com.ar/index.php (razón: falta la cabecera CORS 'Access-Control-Allow-Origin').

Lo unico que se me ocurre que mi hosting no me deje hacer esta tipo de peticiones ¿podria ser?
Título: Re:Error en Ajax: "falta la cabecera CORS 'Access-Control-Allow-Origin"
Publicado por: blackdrake en Febrero 17, 2016, 08:29:52 PM
He estado mirando porque ajax no es mi fuerte y al parecer el código está bien, es posible que el servidor esté bloqueando ese tipo de conexiones, pero me extraña ya que te devuelve un mensaje (con sentido), y no ninguno del tipo "Petición bloqueada por motivos de seguridad etc...".

Puedes probarlo por ejemplo en local o en otro hosting para salir de dudas?

Saludos.
Título: Re:Error en Ajax: "falta la cabecera CORS 'Access-Control-Allow-Origin"
Publicado por: arthusu en Febrero 18, 2016, 02:17:00 AM
Y si intententas poner un .htaccess en tu hosting?

Código (text) [Seleccionar]
# ----------------------------------------------------------------------
# Allow loading of external fonts
# ----------------------------------------------------------------------
<FilesMatch "\.(ttf|otf|eot|woff)$">
    <IfModule mod_headers.c>
        SetEnvIf Origin "http(s)?://(www\.)?(google.com|staging.google.com|development.google.com|otherdomain.net|dev02.otherdomain.net)$" AccessControlAllowOrigin=$0
        Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    </IfModule>
</FilesMatch>


En este caso el ejemplo solo permite fuentes... obviamente tu cambias eso por las extensiones de tus archivos y la URL en lugar de google las URL's de Origen que quieres permitir...

Usando PHP:

Código (php) [Seleccionar]
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

}



Saludos, espero que te sirva c:
Título: Re:Error en Ajax: "falta la cabecera CORS 'Access-Control-Allow-Origin"
Publicado por: $francisco en Febrero 18, 2016, 11:23:16 AM
Probe de muchas maneras y podria ser que mi hosting lo tenga bloqueado de todas maneras encontré la manera de hacerlo con "jsonp"

https://learn.jquery.com/ajax/working-with-jsonp/ (https://learn.jquery.com/ajax/working-with-jsonp/)