1<div id="pageData-name" class="pageData">Hosting</div> 2 3<p> 4This page tells you how to host <code>.crx</code> files 5on your own server. 6If you distribute your extension, app, or theme solely through the 7<a href="http://chrome.google.com/webstore">Chrome Web Store</a>, 8you don't need this page. 9Instead, consult the store help and 10<a href="http://code.google.com/chrome/webstore/index.html">developer documentation</a>. 11<!-- PENDING: add a link to the help --> 12</p> 13 14<p class="note"> 15<strong>Note:</strong> 16If you've already published extensions to the 17<a href="https://chrome.google.com/extensions">Extensions Gallery</a>, 18they will be merged into the store. 19</p> 20 21<p> 22By convention, extensions, 23installable web apps, and themes are served—whether 24by the Chrome Web Store or by a custom server—as 25<code>.crx</code> files. 26When you upload a ZIP file with the 27<a href="https://chrome.google.com/webstore/developer/dashboard">Chrome Developer Dashboard</a>, 28the dashboard creates the <code>.crx</code> file for you. 29</p> 30 31<p> 32If you aren't publishing using the dashboard, 33you need to create the <code>.crx</code> file yourself, 34as described in <a href="packaging.html">Packaging</a>. 35You can also specify 36<a href="autoupdate.html">autoupdate</a> information to ensure that 37your users will have the latest copy of the <code>.crx</code> file. 38</p> 39 40<p> 41A server that hosts <code>.crx</code> files 42must use appropriate HTTP headers, 43so that users can install the file 44by clicking a link to it. 45</p> 46 47<p> 48Google Chrome considers a file to be installable 49if <b>either</b> of the following is true: 50</p> 51 52<ul> 53 <li> 54 The file has the content type 55 <code>application/x-chrome-extension</code> 56 </li> 57 <li> 58 The file suffix is <code>.crx</code> 59 and <b>both</b> of the following are true: 60 <ul> 61 <li> 62 The file <b>is not</b> served with 63 the HTTP header <code>X-Content-Type-Options: nosniff</code> 64 </li> 65 <li> 66 The file <b>is</b> served 67 with one of the following content types: 68 <ul> 69 <li> empty string </li> 70 <li> "text/plain" </li> 71 <li> "application/octet-stream" </li> 72 <li> "unknown/unknown" </li> 73 <li> "application/unknown" </li> 74 <li> "*/*" </li> 75 </ul> 76 </li> 77 </ul> 78 </li> 79</ul> 80 81<p> 82The most common reason for failing to recognize an installable file 83is that the server sends the header 84<code>X-Content-Type-Options: no sniff</code>. 85The second most common reason 86is that the server sends an unknown content type—one 87that isn't in the previous list. 88To fix an HTTP header issue, 89either change the configuration of the server 90or try hosting the <code>.crx</code> file at another server. 91</p> 92