2009-12-20 9 views
10

Google 크롬의 사용자 스크립트에서 교차 출처 XHR을 수행하는 사람이 있습니까? 요청은 서버로 전달되지만 (로그에서 볼 수 있음), readystatechanged 이벤트는 실행되지 않습니다.Google 크롬의 사용자 스크립트에서 교차 출처 XHR

확장 권한은 트릭을 수행하지 않는 것 같습니다. JSONP도 마찬가지다.

+0

확장 프로그램에 사용자 스크립트를 래핑하면 http://code.google.com/chrome/extensions/xhr.html에 따르면 확장 프로그램 매니페스트는 사용자 스크립트가 XSS를 만들도록 허용 할 수 있습니다 XHR. – bzlm

+0

답변 해 주셔서 감사합니다. 이 접근 방식의 문제점은 userscripts.org에서 호스팅 할 수없고 다른 스크립트와 같이 바로 사용할 수 있다는 것입니다. – Pranav

답변

9

현재 버전 (13.0.781 이상)이 이제 GM_xmlhttpRequest()Doc 기능의 대부분 또는 전부를 지원 - 크로스 도메인 포함한를 요청합니다.
Issue 18857: Support cross-site XMLHttpRequest in content scripts을 참조하십시오.

그래서이 스크립트는 (물론, 파이어 폭스) 크롬 지금 완벽하게 잘 작동 :

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


(다음 어떤 SO 페이지를 탐색, 해당 스크립트를 설치 스크립트의 첫 80 개 문자를 작성합니다. 콘솔에 Google 홈 페이지가 표시됩니다.

+0

감사합니다. 오랫동안 필자의 사용자 스크립트를 보지 못했지만, 필자에게 이것이 Chrome과 호환되는지 확인해야 할 이유가되었습니다. – Pranav

+0

위 코드는'@ require' (위와 동일), [@ match'가 아닌] (https://code.google.com/p/chromium/issues/detail?id=112746)에서만 작동합니다. 후자는'XMLHttpRequest를로드 할 수 없습니다. [...] Origin chrome-extension : // [...]은 Access-Control-Allow-Origin에 의해 허용되지 않습니다 .' – Arjan

5

Chrome 13부터 매니페스트의 웹 사이트에 권한을 포함시킨 경우 콘텐츠 스크립트에서 교차 출처 요청을 할 수 있습니다.

Chrome의 사용자 스크립트는 콘텐츠 스크립트입니다. 콘텐츠 스크립트는 원본 교차 XHR을 만들 수 없습니다. 교차 원산지 XHR을 원할 경우 확장 페이지 (배경, 팝업, 옵션)에서 수행해야합니다.

추가 정보를 위해

: 크롬의 http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html

+1

이 답변은 Chrome 13.0.781부터 더 이상 사용되지 않습니다. –

관련 문제