It seems that XMLHttpRequest.setRequestHeader makes all header names lowercase, it's not against or by specs, since they leave a field for free interpretation around this, but does anyone know if there's any official statement or explanation to why browsers chose to do so?
You can try this code snippet in Chrome 17 or Firefox 10:
var xhr = new XMLHttpRequest;
xhr.open('get', 'someurl.php);
xhr.setRequestHeader('X-Test', 'one'); // gets lowercased down to "x-test"
xhr.send();