今日このおかげで5時間くらい悩みました。IIS 6.0の仕様なのかもともとこういうものなのかわからないですが…。

<html><body>
<a href="http://www.exsample.com/exec/go.aspx">こっちへGo</a>
</body><html>

このhtmlファイルをexsampleの仮想フォルダ/portalにおきます。仮想フォルダ/portalにはテスト用に独自のhttpヘッダ(headerA)をつけています。まぁ認証のテストだと思ってください。
同一ホストの仮想フォルダ/execにgo.aspxを置きます。ASP.NET内のJavaScriptでこんなのを書きます。

xmlhttp = new XMLHttpRequest();
(略)
xmlhttp.open(GET, href.location, false); //記憶で書いているんですが、確かGET
xmlhttp.send(null);
document.write("headerA:" + xmlhttp.getResponseHeader("headerA"));

この場合、headerAが取得できません。同一ホストの別仮想フォルダ(/exec)ではなく、別のホスト(another.exsample.com)へ配置すると、このコードは期待したとおり、headerAが取得できます。うーん、IISの問題のような気がします。使ったIIS 6.0はWindows Server 2003 R2 SP2 Enterprise Edition(体験版)です。