Error con AJAX Solicitud CORS no exitosa

Iniciado por SrTrp, 27 Abril 2021, 03:06 AM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

Buenas se migro un sitio en el que estaba trabajando y ahora cuando quiero extraer información con ajax me da este error 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 (javascript) [Seleccionar]

var formdat = new FormData();
formdat.append('tipo', 'P');
$.ajax({     
        data: formdat,
        url: 'https://dom.dominio.com/compl/geting.php',
        type: 'POST',
        contentType: false,
        processData: false,
        success: function(data){
            response = JSON.parse(data);
            for(var i=0;i<response['totalx'];i++){
                var op2 = new Option(response['x'+i], response['x'+i]);
lista.appendChild(op2); 
            }
        }
    });

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.

WHK

Te has dado cuenta que la conexión vía https no es válida?

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

CitarLos 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:

CitarFalló 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.

MinusFour

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)

SrTrp

Cita de: 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

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.


Cita de: 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)
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

<IfModule mod_headers.c>
   Header set Access-Control-Allow-Origin "*"
</IfModule>

Y me arroja el mismo error con todo.

MinusFour

Cita de: SrTrp en 28 Abril 2021, 20:31 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 (javascript) [Seleccionar]
window.origin

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

WHK

<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.