title: Etag header not returned from jQuery.ajax() cross-origin XHR
body: <p>Why is the <code>Etag</code> header not being returned by <code>jqXHR.getAllResponseHeaders()</code> in the following minimal example?</p>
  
  <p>Run with: <code>node etag-server.js</code> (then visit <code>http://localhost:8080/</code>)</p>
  
  <p><strong>etag-server.js</strong></p>
  
  <pre><code>var fs = require('fs'),
      http = require('http');
  
  var webServer = http.createServer(function (request, response) {
      response.writeHead(200, {"Content-Type": "text/html"});
      response.end(fs.readFileSync('frontend.html'));
  });
  
  var apiServer = http.createServer(function (request, response) {
      response.writeHead(200, {
          'Access-Control-Allow-Origin': 'http://localhost:8080',
          'Cache-Control': 'no-cache',
          'Content-Type': 'application/json; charset=utf-8',
          'Etag': 123,
          'Expires': -1,
          'Pragma': 'no-cache'
      });
      response.end(JSON.stringify({ data: [1, 2, 3] }));
  });
  
  webServer.listen(8080);
  apiServer.listen(8081);
  </code></pre>
  
  <p><strong>frontend.html</strong></p>
  
  <pre><code>&lt;!DOCTYPE html&gt;
  &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Etag header not returned from jQuery.ajax() cross-origin XHR&lt;/title&gt;
    &lt;script src="//code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"&gt;&lt;/script&gt;
    &lt;script type="text/javascript"&gt;
      $(document).ready(function () {
          $.ajax('//localhost:8081/')
          .done(function (data, textStatus, jqXHR) {
              $('pre').text(jqXHR.getAllResponseHeaders());
          })
          .fail(function (jqXHR, textStatus, errorThrown) { $('pre').text(textStatus); });
      });
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
  &lt;pre&gt;&lt;/pre&gt;
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p><strong>Page Output</strong></p>
  
  <pre><code>Cache-Control: no-cache
  Content-Type: application/json; charset=utf-8
  Expires: -1
  Pragma: no-cache
  </code></pre>
  
  <p>Where'd the <code>Etag</code> go? They're being sent to the browser:</p>
  
  <pre><code>HTTP/1.1 200 OK
  Access-Control-Allow-Origin: http://localhost:8080
  Cache-Control: no-cache
  Content-Type: application/json; charset=utf-8
  Etag: 123
  Expires: -1
  Pragma: no-cache
  Date: Sat, 25 Jan 2014 02:20:47 GMT
  Connection: keep-alive
  Transfer-Encoding: chunked
  </code></pre>
  
  <p>(as reported by Firebug)</p>