Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: SrTrp en 27 Abril 2021, 03:06 am



Título: Error con AJAX Solicitud CORS no exitosa
Publicado por: SrTrp en 27 Abril 2021, 03:06 am
Buenas se migro un sitio en el que estaba trabajando y ahora cuando quiero extraer información con ajax me da este error
Código:
Solicitud de origen cruzado bloqueada: La misma política de origen no permite la lectura de recursos remotos en https://dom.dominio.com/compl/geting.php. (Razón: Solicitud CORS no exitosa).
Código
  1. var formdat = new FormData();
  2. formdat.append('tipo', 'P');
  3. $.ajax({      
  4.        data: formdat,
  5.        url: 'https://dom.dominio.com/compl/geting.php',
  6.        type: 'POST',
  7.        contentType: false,
  8.        processData: false,
  9.        success: function(data){
  10.            response = JSON.parse(data);
  11.            for(var i=0;i<response['totalx'];i++){
  12.                var op2 = new Option(response['x'+i], response['x'+i]);
  13. lista.appendChild(op2);  
  14.            }
  15.        }
  16.    });
  17.  
Antes me funcionaba no se si sea por el cambio de dominio que antes era algo así www.dominio.com y ahora lleva dos ejemplo www.dom.dominio.com.


Título: Re: Error con AJAX Solicitud CORS no exitosa
Publicado por: WHK en 27 Abril 2021, 07:14 am
Te has dado cuenta que la conexión vía https no es válida?

https://dom.dominio.com/compl/geting.php

Citar
Los sitios web prueban su identidad a través de certificados. Firefox no confía en este sitio porque usa un certificado que no es válido para dom.dominio.com. El certificado solo es válido para los siguientes nombres: *.domain.com, domain.com
 
Código de error: SSL_ERROR_BAD_CERT_DOMAIN

Y aunque aceptes el certificado el navegador no puede cargar el sitio porque el servidor corta la conexión antes de comenzar el traspaso de datos:

Citar
Falló la conexión segura

Ocurrió un error durante a una conexión a dom.dominio.com.PR_CONNECT_RESET_ERROR

Y la versión en domain.com como lo sugiere el certificado da un error 404: https://dom.domain.com/compl/geting.php

El servicio que mencionas ya no existe.

Saludos.


Título: Re: Error con AJAX Solicitud CORS no exitosa
Publicado por: MinusFour en 27 Abril 2021, 13:23 pm
El error básicamente dice que el origen no concuerda.

Si la página que esta haciendo la petición con jQuery tiene un origen de:

https://www.dominio.com

Y un destino de:

https://dom.dominio.com

Entonces se dice que la petición está cruzando el origen. Si la petición cruza el origen, el origen destino tiene que permitir peticiones al origen fuente (por cuestión de seguridad). Sería cuestión de configurar el servidor en el origen destino para hacer esto (tienes que usar la cabecera access-control-allow-origin)


Título: Re: Error con AJAX Solicitud CORS no exitosa
Publicado por: SrTrp en 28 Abril 2021, 20:31 pm
Te has dado cuenta que la conexión vía https no es válida?

https://dom.dominio.com/compl/geting.php

Y aunque aceptes el certificado el navegador no puede cargar el sitio porque el servidor corta la conexión antes de comenzar el traspaso de datos:

Y la versión en domain.com como lo sugiere el certificado da un error 404: https://dom.domain.com/compl/geting.php

El servicio que mencionas ya no existe.

Saludos.
Lo del dom.dominio lo puse como ejemplo la ruta real sería https://latam.NOMBREORGANIZACION.com, y antes de la migración se uso solo https://NOMBREORGANIZACION.com y funcionaba todo bien, no se si en lo primero te refieres a que no me aceptara la solicitud via ajax con "https", no me quedo del todo claro si me pudieras explicar mejor gracias.

El error básicamente dice que el origen no concuerda.

Si la página que esta haciendo la petición con jQuery tiene un origen de:

https://www.dominio.com

Y un destino de:

https://dom.dominio.com

Entonces se dice que la petición está cruzando el origen. Si la petición cruza el origen, el origen destino tiene que permitir peticiones al origen fuente (por cuestión de seguridad). Sería cuestión de configurar el servidor en el origen destino para hacer esto (tienes que usar la cabecera access-control-allow-origin)
Estoy haciendo la petición desde https://latam.NOMBREORGANIZACION.com/mex/ y el destino sería https://latam.NOMBREORGANIZACION.com/compl/geting.php
Y mencionas de usar la cabecera de access-control-allow-origin, esto ya lo hice pero si me pudieras confirmar que lo estoy haciendo bien la cabecera la puse por encima de todo el código del archivo geting.php y sigue sin funcionar, también metí en el htaccess lo siguiente
Código:
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>
Y me arroja el mismo error con todo.


Título: Re: Error con AJAX Solicitud CORS no exitosa
Publicado por: MinusFour en 28 Abril 2021, 21:59 pm

Estoy haciendo la petición desde https://latam.NOMBREORGANIZACION.com/mex/ y el destino sería https://latam.NOMBREORGANIZACION.com/compl/geting.php
Y mencionas de usar la cabecera de access-control-allow-origin, esto ya lo hice pero si me pudieras confirmar que lo estoy haciendo bien la cabecera la puse por encima de todo el código del archivo geting.php y sigue sin funcionar, también metí en el htaccess lo siguiente
Y me arroja el mismo error con todo.

Este es el mismo origen.

Los dos usan https, los dos tienen el mismo dominio y están usando el mismo puerto (por defecto https es 443). Así que no deberías tener ese error (porque es el mismo origen).

¿Estás seguro que uno de estos servidores no está usando HTTP en lugar de HTTPS? Desde la página que hace la petición AJAX, abre la consola y escribe:

Código
  1. window.origin

Si no es exactamente igual al host destino, estás intentado hacer una petición de origen cruzado.


Título: Re: Error con AJAX Solicitud CORS no exitosa
Publicado por: WHK en 28 Abril 2021, 23:34 pm
Código:
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Debes tener cuidado con tu configuración, estás permitiendo que cualquier origen se pueda conectar a tu sitio, si este maneja cookies en ves de un jwt tendrás un xss universal, cualquiera podría crear un script desde cualquier sitio para hacer que el navegador de un usuario ejecute acciones sobre el sitio de manera autenticada.