3

문제는 다음과 같습니다. 일부 호스트 (예 : alexa.com)에 AJAX 요청을 수행해야합니다. Chrome에서는 괜찮 았지만 Firefox에서는 상태 200으로 응답하여 공을 받았습니다. 동일한 기원 정책 때문입니다.하지만 Firefox 추가 기능은 '콘텐츠 스크립트'가 아니라 요청할 수 있습니다. 이 요청을 "비 콘텐츠 스크립트"로 이동하고 "콘텐츠 스크립트"에 응답을 반환하는 방법을 이해할 수 없었습니다.Firefox Addon에서 콘텐츠 스크립트 및 도메인 간 요청

감사합니다.

UPD : 나는 콘텐츠 스크립트에 정보를 전달하는 방법을 발견 - 잘 작동 port.emit()합니다. 이제 addon 스크립트에서 AJAX를 수행하는 방법에 대한 질문이 남아 있습니다.

var Request = require("request").Request; 
    Request({ 
     url: "http://*****" + url, 
     onComplete: function (response) { 
      worker.port.emit('message', response); 
     } 
    }).get(); 

콘텐츠 스크립트가 응답을받지 못했습니다. 죄송합니다. 아직 콘솔에 오류 메시지를 보내는 방법을 모르겠습니다. 또한 비동기로 만들 수있는 방법이 있습니까?

UPD2 : 요청 작동 방법을 아직 모릅니다.

{ 
    "readyState": 0, 
    "status": 0, 
    "statusText": "[Exception... \"Failure\" nsresult: \"0x80004005 (NS_ERROR_FAILURE)\" location: \"JS frame :: resource://jid0-alfzkx8ttazxkergga4i8vsf5re-at-jetpack/api-utils/lib/loader.js -> resource://jid0-alfzkx8ttazxkergga4i8vsf5re-at-jetpack/api-utils/lib/sandbox.js -> resource://jid0-alfzkx8ttazxkergga4i8vsf5re-at-jetpack/api-utils/lib/content/content-proxy.js :: <TOP_LEVEL> :: line 106\" data: no]" 
} 

UPD3 : 나는 내용 스크립트 요청에서 오류를 경고하기 위해 노력했다, 실제로하지 '같은 기원'것 같다 그래, 내가 그것을 가지고 - 파이어 폭스가 완전히 내용에서 모든 요청을 금지하고 있기 때문입니다 스크립트. UPD4 : 나는

var Request = require("request").Request; 
worker.port.emit('message', Request); 

로 요청을 표시하기 위해 노력했다 그리고 그것은 아무 것도 반환하지 않습니다 - 보인다, 요청 모듈과 그 문제를 (또는이 모듈이 포함 방법 방식에). 일반 XMLHttpRequest도 작동하지 않습니다. UPD5 : 최신 SDK의 CONSOLE.LOG으로 (response.toSource는()) 빈 객체를 반환

info: test3: Response:({}) 

답변

2

이 문제는 실제로 꽤 바보 - 그냥 "응답"대신 response.text를 사용합니다.