今日このおかげで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(体験版)です。