No puedo extraer datos usando AJAX de la API pública de Reddit cuando uso el modo de navegación privada de Firefox. El código funciona bien cuando no está en modo de navegación privada.
Por API pública, me refiero a puntos finales como https://reddit.com/r/funny/.json Tenga en cuenta que este enlace funcionará tanto en el modo de navegación normal como en el privado si intenta ir allí directamente. Sin embargo, usar ese mismo enlace de AJAX no funciona en modo de navegación privada como se demuestra en este código:
var url = "https://www.reddit.com/r/funny/.json?limit=4"; $.ajax({ type: 'GET', url: url, dataType: 'jsonp', success: function(data) { $('#foo').append('<p>Success!</p>'); }, error: function() { $('#foo').append('<p>Failure!</p>'); }, jsonp: 'jsonp' });
Enlace JSFiddle (pruebe en ventanas de navegación regulares y privadas)
Pensé que tal vez JSONP ayudaría en esta situación, pero ese no parece ser el caso, o simplemente lo estoy haciendo mal. La documentación de JSONP parece muy escasa, especialmente en lo que se refiere a la API de Reddit.
El error que muestra Firefox en la consola al enviar la solicitud es:
El recurso en "https://www.reddit.com/r/funny/.json?limit=4&jsonp=jQuery400175737938774993335244664702950021422623963_1631658838396&_=1631658838397" se bloqueó porque el bloqueo de contenido está habilitado.
En modo privado o con la protección de seguimiento mejorada habilitada, Firefox 72 y versiones posteriores bloquearán las solicitudes de terceros a algunos dominios , según una lista de connect.me, que se puede encontrar en GitHub .
reddit.com es uno de esos dominios, clasificado como "FingerprintingGeneral" y "Social". Según una nota a pie de página en el blog de Mozilla :
Un rastreador en la lista de bloqueo de Disconnect es cualquier dominio en la categoría Publicidad, Análisis, Social , Contenido o Desconexión. Un Fingerprinter es cualquier dominio en la categoría Fingerprinting . Firefox bloquea los dominios en la intersección de estas dos clasificaciones, es decir, un dominio que se encuentra tanto en una de las categorías de seguimiento como en la categoría de huellas dactilares.
(énfasis agregado, estas son las clasificaciones que se aplican aquí)
Su apuesta más segura para mostrar ese contenido para que también funcione en Firefox y otros navegadores con protecciones de seguimiento similares probablemente sea obtener los datos de su propio backend API en lugar de enviar una solicitud a Reddit directamente desde la interfaz.
O, si esa no es una opción, puede agregar un buen manejo de errores y pedirles a sus usuarios que deshabiliten la Protección de seguimiento mejorada para que su sitio vea el contenido que se están perdiendo.