문제

Firefox에서 IE 작업을위한 HTTP Passthrough Pluggable 프로토콜을 어떻게 만들 수 있습니까?

또는 Firefox를 위해 하나를 개발하는 방법은 무엇입니까? 모든 예는 감사 할 것입니다.

감사.

도움이 되었습니까?

해결책 2

nsiobserver를 구현하는 xpcom 객체를 작성하십시오. 그런 다음 HTTP-on-Modify-Request 및 HTTP-on-Examine-Response의 리스너를 만듭니다.

var myObj = new MyObserver(); //implements nsIObserver
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(myObj "http-on-modify-request",   false);
observerService.addObserver(myObj, "http-on-examine-response", false);

다른 팁

Firefox에서 "플러그 가능한"방식으로 기본 동작을 우회하려면 NPAPI 기반 플러그인. 이 주제에서 문서가 얇다고 가정 해 봅시다. 그러나 시작하기 위해서는 상담 할 수 있습니다. 이것.

NPAPI 플러그인을 사용하면 전체 OS에 액세스 할 수 있으므로 다른 리소스를 Firefox에 자유롭게 노출시킬 수 있습니다.

nsiprotocolhandler를 구현하는 xpcom 객체를 작성하십시오. 예를 들어 웹 페이지에서 로컬 이미지에 액세스 할 수 있습니다.

const Cu = Components.utils;
const Ci = Components.interfaces;
const Cm = Components.manager;
const Cc = Components.classes;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");+
Cu.import("resource://gre/modules/FileUtils.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm");
/***********************************************************
class definition
***********************************************************/
function sampleProtocol() {
     // If you only need to access your component from JavaScript, 
     //uncomment   the following line:
     this.wrappedJSObject = this;
}   
sampleProtocol.prototype = {
classDescription: "LocalFile sample protocol",
classID:          Components.ID("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"),
contractID:       "@mozilla.org/network/protocol;1?name=x-localfile",
QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolHandler]),
//interface nsIProtocolHandler
 allowPort :function(port, scheme)
 {
  if ((port == 80)&&(scheme == x-localfile)) {
   return true;
 }
 else
 {
     return false;
 }
},

newChannel: function(aURI)
{
    // Just example. Implementation must parse aURI
    var file = new FileUtils.File("D:\\temp\\getImage.jpg");
    var uri = NetUtil.ioService.newFileURI(file);
    var channel = NetUtil.ioService.newChannelFromURI(uri);
    return channel;
},
newURI(aSpec, aOriginCharset, aBaseURI)
{
    //URI looks like x-localfile://example.com/image1.jpg
    var uri = Cc["@mozilla.org/network/simple-uri;1"].createInstance(Ci.nsIURI);
    uri.spec = aSpec;
    return uri;
},
scheme: "x-localfile",
defaultPort: 80,
protocolFlags: 76
};
var components = [sampleProtocol];
if ("generateNSGetFactory" in XPCOMUtils)
var NSGetFactory = XPCOMUtils.generateNSGetFactory(components);  //   Firefox 4.0 and higher
else
var NSGetModule = XPCOMUtils.generateNSGetModule(components);    // Firefox 3.x

조심해! 이 접근법은 취약성을 만들 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top