2009-12-20 1230 views
10

¿Alguien ha tenido suerte al realizar Cross Cross XHRs desde un script de usuario en Google Chrome? Las solicitudes pasan al servidor (puedo verlas en los registros) pero el evento readystatechanged nunca se activa.Cross-origen XHR de una secuencia de comandos de usuario en Google Chrome

Los permisos de extensión no parecen estar haciendo el truco. Tampoco lo es JSONP.

+0

De acuerdo con http://code.google.com/chrome/extensions/xhr.html si ajusta el usuario en una extensión, el manifiesto de la extensión puede permitir que el usuario escriba XSS XHR. – bzlm

+0

Gracias por su respuesta, leí acerca de esto. El problema con este enfoque es que no puedo alojarlo en userscripts.org y espero que funcione inmediatamente como otros scripts. – Pranav

Respuesta

9

Las versiones actuales de Chrome 13.0.781 (o posterior) ahora son compatibles con la mayoría o toda la funcionalidad GM_xmlhttpRequest()Doc - incluyendo varios dominios pide.
Ver Issue 18857: Support cross-site XMLHttpRequest in content scripts.

Así que este script funciona perfectamente bien ahora en Chrome (y Firefox, por supuesto):

// ==UserScript== 
// @name   _Cross domain (XSS) GM_xmlhttpRequest, Chrome too 
// @include   http://stackoverflow.com/* 
// ==/UserScript== 

GM_xmlhttpRequest ({ 
    method:  "GET", 
    url:  "http://www.google.com/", 
    onload:  function (response) { 
        console.log ( response.status, 
            response.responseText.substring (0, 80) 
           ); 
       } 
}); 


(Instalar esa secuencia de comandos, a continuación, navegar por cualquier página por lo que el guión se escribe los primeros 80 caracteres de. la página de inicio de Google para la consola.)

+0

Gracias. No he mirado mi usuario en mucho tiempo, esto definitivamente me da una razón para asegurarme de que sea compatible con Chrome. – Pranav

+0

Tenga en cuenta que esto solo funciona para '@ require' (como en el ejemplo anterior), [no para' @ match'] (https://code.google.com/p/chromium/issues/detail?id=112746). Este último lanzará 'XMLHttpRequest no puede cargar [...] Origin chrome-extension: // [...] no está permitido por Access-Control-Allow-Origin. – Arjan

5

A partir de Chrome 13, puede realizar solicitudes de origen cruzado en las secuencias de comandos de contenido si incluyó el permiso para el sitio web en el manifiesto.

Una secuencia de comandos de usuario en Chrome es una secuencia de comandos de contenido. Los scripts de contenido no pueden hacer XHR de origen cruzado. Si desea hacer XHR de origen cruzado, debe hacerlo en las páginas de extensión (fondo, ventana emergente, opciones).

Para más información: http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html

+1

Esta respuesta ahora está obsoleta desde Chrome 13.0.781. –

Cuestiones relacionadas