2012-04-05 17 views
9

Quiero hacer un widget para mostrar los resultados más recientes de la prueba de velocidad del usuario. ¿Speedtest.net tiene una API que podría usar? Traté de hacer una solicitud de AJAX al http://speedtest.net/csv.php?csv=1&ria=0&s=0 pero recibí un error de dominio cruzado. Probé un iframe, pero eso solo lo hizo aparecer en descargas.speedtest.net api

Esto va a estar en una extensión de Google Chrome para que pueda usar la API de Chrome si es necesario.

Respuesta

9

speedtest.net es operado por Ookla and their Speed Test application. Lamentablemente, no proporcionan ninguna API pública para speedtest.net que pueda usar.

Aunque dudo que alguno de estos satisfaga sus necesidades, proporcionan Speed Test Mini y hosted reporting solution for their full Speed Test software package (que incluye capacidades de exportación de CSV).

La razón por la que no puede usar AJAX es porque Chrome no permitirá que JavaScript realice solicitudes entre sitios a menos que el encabezado de respuesta Access-Control-Allow-Origin se establezca en la respuesta de speedtest.net para permitir dicha solicitud.

Sin embargo, en una extensión de Chrome, puede permitir solicitudes de origen cruzado agregando la URL a la sección de permisos de su archivo manifest.json. Por ejemplo:

"permissions": [ 
    "http://*/" 
], 

A continuación, podría utilizar un poco de jQuery para recuperar los datos CSV como una cadena (ver this answer):

$.get('http://speedtest.net/csv.php?csv=1&ria=0&s=0', function(data) { 
    var csv = new String(data); 
    // do stuff with csv 
}, dataType='text'); 
+0

Tengo speedtest.net en los permisos. Usando su código, sigo recibiendo este error: XMLHttpRequest no puede cargar http://speedtest.net/csv.php?csv=1&ria=0&s=0. Origin chrome-extension: // pjmjaebdfmbljffjkcgegpgocnkoembf no está permitido por Access-Control-Allow-Origin. – Ruby

+0

Hmm. Intenta poner '" http: // */"' en los permisos en su lugar. – Xenon

+0

@Zephlon: ¿Alguna suerte con '" http: // */"' en los permisos? – Xenon

1

Puede realizar XMLHttpRequests de origen cruzado en una extensión de cromo, siempre que haya solicitado permisos para el mismo.

En el archivo manifest.json, agregue el URI:

"permissions": ["http://speedtest.net/csv.php?*"] 

Consulte también: Match patterns.