Самый простой способ сделать это - через файл автоконфигурации прокси (при условии, что вашему приложению на самом деле не нужно использовать прокси). Таким образом, вы должны установить network.proxy.type
preference на 2 (использовать файл PAC) и network.proxy.autoconfig_url
на chrome://.../proxy.js
. proxy.js
что-то вроде:
function FindProxyForURL(url, host)
{
if (shExpMatch(host, "*.company.com"))
{
return "DIRECT";
}
return "SOCKS localhost:19191";
}
Таким образом, любые запросы к *.company.com
не будут использовать прокси, тогда как запросы к другим хостам будут направлены на порт localhost, который, как мы надеемся, закрыт - поэтому эти запросы не будут выполнены успешно. Это, конечно, хак, но он достаточно прост и хорошо работает в большинстве сценариев.
Правильный (но более сложный) способ сделать это - использовать политики содержимого . Вам необходимо внедрить nsIContentPolicy в компонент XPCOM и зарегистрировать этот компонент в категории content-policy
. Это обеспечит вызов метода shouldLoad()
вашего компонента для каждого загружаемого URL - вы можете вернуть Ci.nsIContentPolicy.REJECT_REQUEST
, чтобы заблокировать загрузку.