Home | History | Annotate | Download | only in articles
      1 <h1>Hosting</h1>
      2 
      3 <p class="warning"><b>Warning:</b>
      4 As of Chrome 33,
      5 Windows stable/beta channel users can only download extensions
      6 hosted in the Chrome Web store,
      7 except for installs via
      8 <a href="https://support.google.com/chrome/a/answer/188453">enterprise policy</a>
      9 or
     10 <a href="getstarted#unpacked">developer mode</a>
     11  (see
     12  <a href="http://blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html">Protecting Windows users from malicious extensions</a>).
     13 You can still create your own <code>.crx</code> file and use it for testing in the dev channel,
     14 but you can't host that file on your own server.
     15 </p> 
     16 
     17 <p>
     18 This page tells you how to host <code>.crx</code> files
     19 on your own server.
     20 If you distribute your extension, app, or theme solely through the
     21 <a href="http://chrome.google.com/webstore">Chrome Web Store</a>,
     22 you don't need this page.
     23 Instead, consult the
     24 <a href="http://www.google.com/support/chrome_webstore/">store help</a> and
     25 <a href="http://code.google.com/chrome/webstore/index">developer documentation</a>.
     26 </p>
     27 
     28 <p>
     29 By convention, extensions,
     30 installable web apps, and themes are served&mdash;whether
     31 by the Chrome Web Store or by a custom server&mdash;as
     32 <code>.crx</code> files.
     33 When you upload a ZIP file with the
     34 <a href="https://chrome.google.com/webstore/developer/dashboard">Chrome Developer Dashboard</a>,
     35 the dashboard creates the <code>.crx</code> file for you.
     36 </p>
     37 
     38 <p>
     39 If you aren't publishing using the dashboard,
     40 you need to create the <code>.crx</code> file yourself,
     41 as described in <a href="packaging">Packaging</a>.
     42 You can also specify
     43 <a href="autoupdate">autoupdate</a> information to ensure that
     44 your users will have the latest copy of the <code>.crx</code> file.
     45 </p>
     46 
     47 <p>
     48 A server that hosts <code>.crx</code> files
     49 must use appropriate HTTP headers,
     50 so that users can install the file
     51 by clicking a link to it.
     52 </p>
     53 
     54 <p>
     55 Google Chrome considers a file to be installable
     56 if <b>either</b> of the following is true:
     57 </p>
     58 
     59 <ul>
     60   <li>
     61     The file has the content type
     62     <code>application/x-chrome-extension</code>
     63   </li>
     64   <li>
     65     The file suffix is <code>.crx</code>
     66     and <b>both</b> of the following are true:
     67     <ul>
     68       <li>
     69         The file <b>is not</b> served with
     70         the HTTP header <code>X-Content-Type-Options: nosniff</code>
     71       </li>
     72       <li>
     73         The file <b>is</b> served
     74         with one of the following content types:
     75         <ul>
     76           <li> empty string </li>
     77           <li> "text/plain" </li>
     78           <li> "application/octet-stream" </li>
     79           <li> "unknown/unknown" </li>
     80           <li> "application/unknown" </li>
     81           <li> "*/*" </li>
     82         </ul>
     83       </li>
     84     </ul>
     85   </li>
     86 </ul>
     87 
     88 <p>
     89 The most common reason for failing to recognize an installable file
     90 is that the server sends the header
     91 <code>X-Content-Type-Options: nosniff</code>.
     92 The second most common reason
     93 is that the server sends an unknown content type&mdash;one
     94 that isn't in the previous list.
     95 To fix an HTTP header issue,
     96 either change the configuration of the server
     97 or try hosting the <code>.crx</code> file at another server.
     98 </p>
     99