傘地蔵さん、
ユーザ/パスワードのウィンドウが開いた時の URL は Location で指定した先になっているのですよね(?)。
そしてユーザ/パスワードを入力するとちゃんと認証されるのでしょうか?
そうだとするとちょっとわかりませんね。
その間のリクエストとレスポンスを見せてもらえば何かわかるかもしれませんが、それでわかるくらいならご自分で解決しているでしょうし。
"303 See Other" での挙動
サーバは自作の HTTP サーバ、ブラウザは IE5.5 を使用しています。
プラウザで最初に指定するロケーションは認証が必要無く、そこから 303
で指定される位置では認証が必要な事例です。
最初にアクセスしてくる位置で 401 を返すと埋め込まれたユーザ名と
パスワードが自動的に返されてきます。
最初にアクセスされた位置で認証を行なわず、ユーザ名とパスワードを
埋め込んだ URL を Location に指定すると、指定したロケーションに
接続して来ますが、そこで 401 エラーを返すと埋め込まれた情報を用いず
ユーザ名とパスワードを入力するウィンドウが開かれます。
傘地蔵さん、
レスポンスコード 301 で Location: http://user:password@host/path
をサーバが返せば、ブラウザは host に接続して GET /path HTTP/1.1 を出し、host のサーバが 401 エラーを返してブラウザが Authorization 付きのリクエストを出しなおす、ということになるのが普通だろうと思います。
どの段階の話でしょうか? また、host のサーバは傘地蔵さんのサーバということなのでしょうか?
HTTP サーバを作っています。
認証の不要なディレクトリには 301 エラーで Location を指定してやると
飛んでくれます。
認証の必要なディレクトリへ飛ぶのにユーザ名とパスワードを埋め込んだ
URI を Location で指定してもユーザ名とパスワードを要求してしまいます。
ユーザ名とパスワードを求められないようにするには、どんなレスポンスを
返せば良いのでしょう。