Obtener datos remotos con JSONP, CORB error de Chrome

Tenía que consultar un archivo JSON de un servidor diferente a donde tengo la aplicación, el problema es que aunque mandaba la petición adecuada (JSONP) desde jQuery, Google Chrome insistía en mostrarme el mensaje: Cross-Origin Read Blocking (CORB) blocked corss-origin response ... bla bla bla.

Lo primero es que la única diferencia de hacer una solicitud JSON de JSONP, es indicarle el callback del lado del cliente, esto se logra enviando el parámetro callback=? , así le enviaremos la petición al servidor y nos regresará el formato adecuado. Esto claro si el servidor lo permite, si es una aplicación tuya lo que tienes que hacer en lugar de regresar el json normal, es regresarlo con el callback indicado, ejemplo:

<?php
   $msg = new stdclass;
   $msg->ok = 1;
   //respuesta clásica JSON
   echo json_encode($array);
   //respuesta JSONP
   echo strip_tags($_GET['callback'])."(".json_encode($msg).")";

Así, le indicamos al servidor que regrese encapsulado el JSON con el callback indicado por el cliente. Hasta ahí todo bien, sin embargo, me seguía mostrando el error de CORB. Resulta que el problema es que no estaba enviando la cabecera adecuada de contenido, normalmente envio application/json y ahí es donde tenía el error: debe enviarse application/javascript. En realidad eso fue todo, después de ello ya me mostró la información que requería. La cabecera se puede enviar algo como esto, al inicio del script.

<?php
   // enviamos el tipo de contenido de nuestro JSON (jsonp)
   header('Content-Type: application/javascript');
   echo strip_tags($_GET['callback'])."(".json_encode($msg).")";

Eso debería bastar para consumir correctamente el contenido.

+ fotos / videos

Almacenado en javascript, PHP, Desarrollo Web

por Jorge Martínez Mauricio :)

blog / fotos / archivo

Obtener datos remotos con JSONP, CORB error de Chrome

tar.mx es un blog sobre fotografía, tecnología y otras chunches

modificado martes 13 de julio de 2021, 13:08