Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(736)

Side by Side Diff: chrome/common/extensions/docs/server2/templates/private/proxy_intro.html

Issue 10750017: Extensions Docs Server: Intro data source (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <!-- BEGIN AUTHORED CONTENT -->
2 <p id="classSummary">
3 Use the <code>chrome.proxy</code> module to manage Chrome's
4 proxy settings. This module relies on the <a href="types.html#ChromeSetting">
5 ChromeSetting prototype of the type API</a> for getting and setting the proxy
6 configuration.
7 </p>
8 <h2 id="manifest">Manifest</h2>
9 <p>You must declare the "proxy" permission
10 in the <a href="manifest.html">extension manifest</a>
11 to use the proxy settings API.
12 For example:</p>
13 <pre>{
14 "name": "My extension",
15 ...
16 <b>"permissions": [
17 "proxy"
18 ]</b>,
19 ...
20 }</pre>
21 <h2 id="description">Objects and properties</h2>
22 <p>
23 Proxy settings are defined in a
24 <a href="#type-proxy.ProxyConfig"><code>ProxyConfig</code></a> object. Depending on
25 Chrome's proxy settings, the settings may contain
26 <a href="#type-proxy.ProxyRules"><code>ProxyRules</code></a> or a <a
27 href="#type-proxy.PacScript"><code>PacScript</code></a>.
28 </p>
29 <h3 id="proxy_modes">Proxy modes</h3>
30 <p>
31 A ProxyConfig object's <code>mode</code> attribute determines the overall
32 behavior of Chrome with regards to proxy usage. It can take the following
33 values:
34 <dl>
35 <dt><code>direct</code></dt>
36 <dd>In <code>direct</code> mode all connections are created directly, without
37 any proxy involved. This mode allows no further parameters in the
38 <code>ProxyConfig</code> object.</dd>
39 <dt><code>auto_detect</code></dt>
40 <dd>In <code>auto_detect</code> mode the proxy configuration is determined by
41 a PAC script that can be downloaded at
42 <a href="http://wpad/wpad.dat">http://wpad/wpad.dat</a>.
43 This mode allows no further parameters in the <code>ProxyConfig</code>
44 object.</dd>
45 <dt><code>pac_script</code></dt>
46 <dd>In <code>pac_script</code> mode the proxy configuration is determined by
47 a PAC script that is either retrieved from the URL specified in the
48 <a href="#type-proxy.PacScript"><code>PacScript</code></a> object or
49 taken literally from the <code>data</code> element specified in the
50 <a href="#type-proxy.PacScript"><code>PacScript</code></a> object.
51 Besides this, this mode allows no further parameters in the
52 <code>ProxyConfig</code> object.</dd>
53 <dt><code>fixed_servers</code></dt>
54 <dd>In <code>fixed_servers</code> mode the proxy configuration is codified in
55 a <a href="#type-proxy.ProxyRules><code>ProxyRules"><code>ProxyRules</code></a >
56 object. Its structure is described in <a href="#proxy_rules">Proxy rules</a>.
57 Besides this, the <code>fixed_servers</code> mode allows no further parameters
58 in the <code>ProxyConfig</code> object.</dd>
59 <dt><code>system</code></dt>
60 <dd>In <code>system</code> mode the proxy configuration is taken from the
61 operating system. This mode allows no further parameters in the
62 <code>ProxyConfig</code> object. Note that the <code>system</code> mode is
63 different from setting no proxy configuration. In the latter case, Chrome
64 falls back to the system settings only if no command-line options influence
65 the proxy configuration.</dd>
66 </dl>
67 </p>
68 <h3 id="proxy_rules">Proxy rules</h3>
69 <p>
70 The <a href="#type-proxy.ProxyRules"><code>ProxyRules</code></a> object can cont ain
71 either a <code>singleProxy</code> attribute or a subset of
72 <code>proxyForHttp</code>, <code>proxyForHttps</code>, <code>proxyForFtp</code>,
73 and <code>fallbackProxy</code>.
74 </p>
75 <p>
76 In the first case, HTTP, HTTPS and FTP traffic is proxied through the specified
77 proxy server. Other traffic is sent directly. In the latter case the behavior is
78 slightly more subtle: If a proxy server is configured for the HTTP, HTTPS or FTP
79 protocol, the respective traffic is proxied through the specified server. If no
80 such proxy server is specified or traffic uses a different protocol than HTTP,
81 HTTPS or FTP, the <code>fallbackProxy</code> is used. If no
82 <code>fallbackProxy</code> is specified, traffic is sent directly without a
83 proxy server.
84 </p>
85 <h3 id="proxy_server_objects">Proxy server objects</h3>
86 <p>
87 A proxy server is configured in a
88 <a href="#type-proxy.ProxyServer"><code>ProxyServer</code></a> object. The conne ction
89 to the proxy server (defined by the <code>host</code> attribute) uses the
90 protocol defined in the <code>scheme</code> attribute. If no <code>scheme</code>
91 is specified, the proxy connection defaults to <code>http</code>.
92 </p>
93 <p>
94 If no <code>port</code> is defined in a
95 <a href="#type-proxy.ProxyServer"><code>ProxyServer</code></a> object, the port is
96 derived from the scheme. The default ports are:
97 <table>
98 <tr><th>Scheme</th><th>Port</th></tr>
99 <tr><td>http</td><td>80</td></tr>
100 <tr><td>https</td><td>443</td></tr>
101 <tr><td>socks4</td><td>1080</td></tr>
102 <tr><td>socks5</td><td>1080</td></tr>
103 </table>
104 </p>
105 <h3 id="bypass_list">Bypass list</h3>
106 <p>
107 Individual servers may be excluded from being proxied with the
108 <code>bypassList</code>. This list may contain the following entries:
109 <dl>
110 <dt><code>[<em>&lt;scheme&gt;</em>://]<em>&lt;host-pattern&gt;</em>[:<em>&lt;p ort&gt;</em>]</code></dt>
111 <dd>Match all hostnames that match the pattern <em>&lt;host-pattern&gt;</em>.< br>
112 Examples: <code>"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99",
113 "https://x.*.y.com:99"</code></dd>
114 <dt><code>[<em>&lt;scheme&gt;</em>://]<em>&lt;ip-literal&gt;</em>[:<em>&lt;por t&gt;</em>]</code></dt>
115 <dd>Match URLs that are IP address literals.<br>
116 Conceptually this is the similar to the first case, but with special cases
117 to handle IP literal canonicalization. For example, matching
118 on "[0:0:0::1]" is the same as matching on "[::1]" because
119 the IPv6 canonicalization is done internally.<br>
120 Examples: <code>"127.0.1", "[0:0::1]", "[::1]", "http://[::1]:99"</code></dd>
121 <dt><code><em>&lt;ip-literal&gt;</em>/<em>&lt;prefix-length-in-bits&gt;</em></ code></dt>
122 <dd>Match any URL containing an IP literal within the given range. The IP
123 range is specified using CIDR notation.<br>
124 Examples: <code>"192.168.1.1/16", "fefe:13::abc/33"</code></dd>
125 <dt><code>&lt;local&gt;</code></dt>
126 <dd>Match local addresses. An address is local if the host is "127.0.0.1",
127 "::1", or "localhost".<br>
128 Example: <code>"&lt;local&gt;"</code></dd>
129 </dl>
130 <h2 id="overview-examples">Examples</h2>
131 <p>
132 The following code sets a SOCKS 5 proxy for HTTP connections to all servers but
133 foobar.com and uses direct connections for all other protocols. The settings
134 apply to regular and incognito windows, as incognito windows inherit settings
135 from regular windows. Please also consult the <a
136 href="types.html#ChromeSetting">Types API</a> documentation.
137 </p>
138 <pre>
139 var config = {
140 mode: "fixed_servers",
141 rules: {
142 proxyForHttp: {
143 scheme: "socks5",
144 host: "1.2.3.4"
145 },
146 bypassList: ["foobar.com"]
147 }
148 };
149 chrome.proxy.settings.set(
150 {value: config, scope: 'regular'},
151 function() {});
152 </pre>
153 <p>
154 The following code sets a custom PAC script.
155 </p>
156 <pre>
157 var config = {
158 mode: "pac_script",
159 pacScript: {
160 data: "function FindProxyForURL(url, host) {\n" +
161 " if (host == 'foobar.com')\n" +
162 " return 'PROXY blackhole:80';\n" +
163 " return 'DIRECT';\n" +
164 "}"
165 }
166 };
167 chrome.proxy.settings.set(
168 {value: config, scope: 'regular'},
169 function() {});
170 </pre>
171 <p>
172 The next snippet queries the currently effective proxy settings. The effective
173 proxy settings can be determined by another extension or by a policy. See the <a
174 href="types.html#ChromeSetting">Types API</a> documentation for details.
175 </p>
176 <pre>
177 chrome.proxy.settings.get(
178 {'incognito': false},
179 function(config) {console.log(JSON.stringify(config));});
180 </pre>
181 <p>
182 Note that the <code>value</code> object passed to <code>set()</code> is not
183 identical to the <code>value</code> object passed to callback function of
184 <code>get()</code>. The latter will contain a
185 <code>rules.proxyForHttp.port</code> element.
186 </p>
187 <!-- END AUTHORED CONTENT -->
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698