aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/mozilla/add-ons/webextensions/api/proxy/index.html
blob: e259cf65fcc1bd51960b48350a194e67085dfee9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
---
title: proxy
slug: Mozilla/Add-ons/WebExtensions/API/proxy
translation_of: Mozilla/Add-ons/WebExtensions/API/proxy
---
<div>{{AddonSidebar}}</div>

<div></div>

<div class="blockIndicator warning">
<p><strong>Warning</strong><br>
 不推荐使用 {{WebExtAPIRef("proxy.register()")}} 或者 {{WebExtAPIRef("proxy.unregister()")}} 方法使用 <a href="/en-US/Add-ons/WebExtensions/API/proxy/register#PAC_file_specification">Proxy Auto-Configuration (PAC) file</a>. 这个 API 将会在 Firefox 68 中废弃并且在 Firefox 71中删除.</p>
</div>

<p>使用proxy API来代理web请求。你可以使用<code><strong>{{WebExtAPIRef("proxy.onRequest")}}</strong></code>事件监听器来拦截web请求,并且返回一个可以描述是否代理并且怎样代理它们的对象。</p>

<p>{{WebExtAPIRef("proxy.onRequest")}}的好处在于,用于实现你拦截策略的代码在你的扩展的后台脚本运行,所以,它可以让<code><strong>WebExtension APIs</strong></code>能够完全的访问你的扩展(举例来说,可以访问你扩展的<code>storage</code>和像dns等类似的网络api)</p>

<p>除了这个api,扩展也能够使用<strong><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/proxyConfig">browserSettings.proxyConfig</a></code></strong>属性来重新编辑你全局的<code>proxy</code>设置</p>

<p>Chrome浏览器提供了一个叫做<code><a href="https://developer.chrome.com/extensions/proxy">'proxy'</a></code>api扩展,它的功能跟这个api类似,在chrome的api中也可以用来实现一个<code>拦截策略。</code>然而,Chrome 的API的设计跟这个API设计完全不同。因为这个API跟谷歌的<code>proxy</code><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">API完全不同, 这个API只能通过'browser'命名空间访问</span></font></p>

<p>如果你想用这个API你需要得到'<code>proxy</code>'的<a href="https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a>.并且,如果你想拦截一个请求,你同样也需要当前拦截请求的url的 <a href="https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">host permission</a></p>

<h2 id="Types">Types</h2>

<dl>
 <dt>{{WebExtAPIRef("proxy.ProxyInfo")}}</dt>
 <dd>Describes a proxy.</dd>
 <dt>{{WebExtAPIRef("proxy.RequestDetails")}}</dt>
 <dd>
 <p>Contains information about a web request that the browser is about to make.</p>
 </dd>
</dl>

<h2 id="Properties">Properties</h2>

<dl>
 <dt>{{WebExtAPIRef("proxy.settings")}}</dt>
 <dd>Get and set proxy settings.</dd>
</dl>

<h2 id="Functions">Functions</h2>

<dl>
 <dt>{{WebExtAPIRef("proxy.register()")}} {{Deprecated_Inline}}</dt>
 <dd>Registers the given proxy script.</dd>
 <dt>{{WebExtAPIRef("proxy.unregister()")}} {{Deprecated_Inline}}</dt>
 <dd>Unregisters the proxy script.</dd>
</dl>

<h2 id="Events">Events</h2>

<dl>
 <dt>{{WebExtAPIRef("proxy.onError")}}</dt>
 <dd>Fired when the system encounters an error running the PAC script or the <code>onRequest</code> listener.</dd>
 <dt>{{WebExtAPIRef("proxy.onRequest")}}</dt>
 <dd>Fired when a web request is about to be made, giving the extension an opportunity to proxy it.</dd>
</dl>

<p>{{WebExtExamples("h2")}}</p>

<h2 id="Browser_compatibility">Browser compatibility</h2>

<p>{{Compat("webextensions.api.proxy")}}</p>