Llamé a la API de terceros usando Jquery AJAX. Recibo el siguiente error en la consola:
El bloqueo de lectura de origen cruzado (CORB) bloqueó la respuesta de origen cruzado MI URL con la aplicación/json de tipo MIME. Consulte https://www.chromestatus.com/feature/5629709824032768 para obtener más detalles.
He usado el siguiente código para la llamada Ajax:
$.ajax({ type: 'GET', url: My Url, contentType: 'application/json', dataType:'jsonp', responseType:'application/json', xhrFields: { withCredentials: false }, headers: { 'Access-Control-Allow-Credentials' : true, 'Access-Control-Allow-Origin':'*', 'Access-Control-Allow-Methods':'GET', 'Access-Control-Allow-Headers':'application/json', }, success: function(data) { console.log(data); }, error: function(error) { console.log("FAIL....================="); } });Cuando revisé Fiddler, obtuve los datos en respuesta pero no en el método de éxito de Ajax.
Por favor, ayúdame.
dataType:'jsonp',
Está realizando una solicitud JSONP, pero el servidor responde con JSON.
El navegador se niega a intentar tratar el JSON como JSONP porque sería un riesgo para la seguridad. (Si el navegador intentara tratar el JSON como JSONP , en el mejor de los casos, fallaría).
Consulte esta pregunta para obtener más detalles sobre qué es JSONP. Tenga en cuenta que es un truco desagradable para evitar la política del mismo origen que se usó antes de que CORS estuviera disponible. CORS es una solución mucho más limpia, segura y poderosa para el problema.
Parece que está tratando de hacer una solicitud de origen cruzado y está arrojando todo lo que se le ocurre en una enorme pila de instrucciones contradictorias.
Debe comprender cómo funciona la política del mismo origen.
Consulte esta pregunta para obtener una guía detallada.
Ahora algunas notas sobre su código:
contentType: 'application/json',
Quita eso.
dataType:'jsonp',
Elimina esto. (En su lugar, podría hacer que el servidor responda con JSONP, pero CORS es mejor).
responseType:'application/json',
Esta no es una opción compatible con jQuery.ajax. Elimina esto.
xhrFields: { withCredentials: false },
Este es el valor predeterminado. A menos que lo esté configurando como verdadero con ajaxSetup, elimínelo.
headers: { 'Access-Control-Allow-Credentials' : true, 'Access-Control-Allow-Origin':'*', 'Access-Control-Allow-Methods':'GET', 'Access-Control-Allow-Headers':'application/json', },
En la mayoría de los casos, la respuesta bloqueada no debería afectar el comportamiento de la página web y el mensaje de error CORB puede ignorarse sin problemas. Por ejemplo, la advertencia puede ocurrir en los casos en que el cuerpo de la respuesta bloqueada ya estaba vacío, o cuando la respuesta se iba a enviar a un contexto que no puede manejarlo (por ejemplo, un documento HTML como una página de error 404). siendo entregado a una etiqueta).
https://www.chromium.org/Home/chromium-security/corb-for-developers
Tuve que limpiar el caché de mi navegador, estaba leyendo en este enlace, que, si la solicitud obtiene una respuesta vacía, obtenemos este error de advertencia. Estaba recibiendo algunos CORS en mi solicitud, por lo que la respuesta de esta solicitud quedó vacía. Todo lo que tenía que hacer era borrar el caché del navegador y el CORS se escapó. Estaba recibiendo CORS porque Chrome había guardado el número de PUERTO en el caché. El servidor solo aceptaría localhost:3010 y estaba haciendo localhost:3002 , debido al caché.
Devuelva la respuesta con el encabezado 'Access-Control-Allow-Origin:*' Verifique el código a continuación para la respuesta del servidor Php.
<?php header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json'); echo json_encode($phparray);