この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちはひさしぶりに書きます。
今日は新人プログラマーカツオがはまったdigest認証にまつわるIEのエラーについて書きます。
自分が担当しているプロジェクトで管理画面に
DIGEST認証をかけることになりました。
ということで頑張って書けたんですけど
FIREFOXだと普通にDigest認証がかかっているのに
どうゆうわけかIEだと認証がかからないわけです。
400 Bad Requestがでました。
ログをみたらこんな感じ
Tue Apr 15 11:19:59 2008] [error] [client xxx.xxx.xxx.xxx] Digest: uri mismatch
- </admin/tour> does not match request-uri </admin/tour?page=1>
何やら調べてみたら
IE6以前のバージョンでdigest認証を利用するとAuthorizationヘッダの,uri に ?以降のパラメータが含まれずHTTP400のエラーがでてるみたいです。
IEのバグだそうです。IE7では改善されているようですが。
そんなわけで
<Location /admin> AuthType Digest
AuthName "Enter ID and Password"
AuthDigestProvider file
AuthUserFile conf/xxx/.htdadmin
require valid-user
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
</Location>
と赤字で書いたところをダイジェスト認証に書いてあげれば
強制的に回避してくれるみたいですよ。
ちょっと自分のメモ書きみたいになってしまいましたが
文章苦手なので許してくださいませ。
ではではまた。