Firefox 用の HTTP パススルー プラガブル プロトコル
-
13-09-2019 - |
質問
IE 用の http パススルー プラガブル プロトコルを Firefox で動作させるにはどうすればよいですか?
あるいは、Firefox 用に開発するにはどうすればよいでしょうか?例をいただければ幸いです。
ありがとう。
解決 2
nsIObserverをを実装XPCOMオブジェクトを書き込みます。そして、HTTP-にモディファイ要求とHTTPオン調べる応答のためのリスナーを作成します。
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 に公開できます。
書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
きぼ!このアプローチを創造できる脆弱性
所属していません StackOverflow