昨天設定好 Digest Realm Authentication 之後
但碰到有 query string 的 URL 時,IE 就突槌了,摘錄 HTTP Header 資料如下就一切明瞭了
GET /awstats/awstats.pl/awstats.pl?framename=mainleft HTTP/1.1….
….省略
Cookie: __utma=200320509.1007104159.1151628725.1187006067.1187006101.242; __utmz=200320509.1182908533.228.4.utmccn=(organic)|utmcsr=google|utmctr=%e9%9a%a8%e6%83%b3%e6%84%8f%e8%aa%8c|utmcmd=organic; phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D; control-commentControl=false; control-pluginControl=false; control-miscControl=false; control-mediaCastControl=false; rfolder-root=true; rfolder-??????=true; rfolder-??L???=true; __utmb=200320509; __utmc=200320509; JSESSIONID=GQGGcQPrYCQhzvCpyVKxJBGwmfNpy1cs2wXfy1bv1sgST9vSYyL1!-857858892
Authorization: Digest username=”cychien”, realm=”AWSTATS”, qop=”auth”, algorithm=”MD5″, uri=”/awstats/awstats.pl/awstats.pl?framename=mainleft“, nonce=”UBoBaJM3BAA=192135920c05c0d0ce0b89e69fbef6144b46ccad”, nc=00000003, cnonce=”8b98b9b1072e4c812443386f8363c07c”, response=”6d5c775889d9e631aed40cfafd19ce9a”
問題就出在 Authorization 的 uri 參數中,IE 的 bug 註定不會將 query string 附上,所以Apache 會認為與先前的 uri 不同,所以回覆 Bad Request.
針對微軟的老大心態,死就是不改他的 bug,所幸 Apache 從 2.0.51 之後也推出一組解決方案,藉以解決 IE query string 問題. 只要在 httpd.conf 中加上 BrowserMatch “MSIE” AuthDigestEnableQueryStringHack=On 只有針對 IE 瀏覽器,才會忽略 Authorization uri 參數的錯誤。經過測試果然有效。特別記錄一下..