2009-12-20 10 views
10

Google Chrome'da bir kullanıcı komut dosyasından çapraz kaynaklı XHR'leri gerçekleştirme şansı olan var mı? İstekler sunucuya gider (bunları günlüklerde görebilirim), ancak readystatechanged olayı hiç tetiklenmez.Google Chrome'da bir kullanıcı komut dosyasından çapraz kaynaklı XHR

Uzantı izinleri hile yapıyor gibi görünmüyor. JSONP da değil.

+0

http://code.google.com/chrome/extensions/xhr.html adresine göre, kullanıcı uzantısını bir uzantıya dayandırırsanız, uzantı bildirimi, kullanıcının XSS yapmasına izin verebilir XHR. – bzlm

+0

Cevabınız için teşekkürler, bunu okudum. Bu yaklaşımla ilgili sorun, userscripts.org üzerinde barındırılamam ve diğer betikler gibi hemen çalışmasını beklemem. – Pranav

cevap

9

Güncel sürümleri (13.0.781 veya üzeri) şimdi GM_xmlhttpRequest()Doc işlevi çoğu veya tamamı destekleyen - çapraz alan adı dahil ister.
Bkz. Issue 18857: Support cross-site XMLHttpRequest in content scripts.

Yani bu komut dosyası (tabii ki, ve Firefox) Chrome'da şimdi mükemmel çalışıyor:

// ==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) 
           ); 
       } 
}); 


(daha sonra herhangi SO sayfayı taramak, o senaryoyu yükleme komut ilk 80 karakteri yazacak. konsolun Google ana sayfası.)

+0

Teşekkürler. Kullanıcılarıma çağlardan beri bakmadım, bu kesinlikle Chrome uyumlu olduğundan emin olmak için bana bir neden sunuyor. – Pranav

+0

Bunun yalnızca '@ require' için çalıştığını unutmayın (yukarıdaki gibi), [@ match' için değil] (https://code.google.com/p/chromium/issues/detail?id=112746). İkincisi 'XMLHttpRequest yüklenemedi [...] Kökeni krom uzantısı: // [...] Erişim-Kontrol-İzin-Menşei tarafından izin verilmiyor. – Arjan

5

Chrome 13'ten itibaren, izin belgesindeki web sitesine izin verdiyseniz, İçerik Komut Dosyalarında çapraz kaynaklı istekler yapabilirsiniz.

Chrome'da bir kullanıcı komut dosyası bir içerik komut dosyasıdır. İçerik komut dosyaları, çapraz kaynaklı XHR'leri oluşturamaz. Kökeni XHR yapmak isterseniz, uzantı sayfalarında (arka plan, açılır pencere, seçenekler) yapılmalıdır.

fazla bilgi için

: Chrome http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html

+1

Bu yanıt artık Chrome 13.0.781'den itibaren kullanımdan kaldırılmıştır. –