سؤال

كيف يمكنني إجراء بروتوكول HTTP PASSTHROUGH من أجل العمل في فايرفوكس؟

بدلا من ذلك، كيفية تطوير واحد لفيرفوكس؟ أي أمثلة سيكون موضع تقدير.

شكرًا.

هل كانت مفيدة؟

المحلول 2

اكتب كائن XPCom ينفذ NsioBserver. ثم قم بإنشاء المستمع لطلب http-on-modify واستجابة http-on-action.

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، يمكنك الوصول إلى نظام التشغيل بأكمله، وبالتالي حرية عرض أي موارد أخرى لفيرفوكس.

اكتب كائن XPCOM الذي ينفذ Nsiprotocolhandler. على سبيل المثال، يمكنك الوصول إلى الصور المحلية من صفحات الويب:

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