En el lado del servidor, todo lo que tiene que configurar es un recurso web (por ejemplo, la página) que acepta una solicitud GET
y devuelve los datos utilizando la convención JSON-P, que es:
callback({"data": "here"});
... donde el nombre de la función ("devolución de llamada" en ese ejemplo) generalmente se toma de uno de los parámetros de cadena de consulta (por convención, el parámetro "devolución de llamada"), y el dato es JSON (aunque técnicamente podría ser cualquier cosa válido literalmente en un objeto JavaScript, la convención con JSON-P es restringirse a lo que es válido en JSON). Así, por ejemplo, digamos que la solicitud era la siguiente:
http://example.com/foo.php?callback=bar
que llama a la página foo.php
(no tiene que ser PHP, puede ser cualquier sistema de servidor dinámico), diciéndole que la La función que queremos que llame es "barra". Nuestra respuesta sería:
bar({"data": "here"});
En el lado del cliente, hay que añadir un elemento script
a la página de forma dinámica, y también añadir la función de devolución de llamada que conseguirá desencadenada por la respuesta JSON-P. Por lo general, desea asignar un nombre aleatorio a esa función y eliminarla cuando haya terminado.
Here's a complete example como respuesta a otra pregunta aquí en Stack Overflow. Puede que tenga que adaptarlo ligeramente para usarlo en un complemento de Firefox, pero los conceptos son los mismos.
¡Muchas gracias! La solución CORS me solucionó. –
Just downvoted bc esta respuesta asume php, y por lo tanto prefiero T.J. La respuesta de Crowder a continuación. – Steven2163712
@ Steven2163712 si lee más allá del título, el problema OP es en realidad CORS, independientemente del idioma. Si bien la respuesta de TJ es más genérica (IMO php es lo suficientemente genérico), no resuelve el problema de los OP. – soemarko