[Squeak-ja: 2473] Re: [N7]HttpUrlの不具合

Hideo Kawamura kawa90 @ m2.pbc.ne.jp
2005年 6月 13日 (月) 21:03:09 JST


HttpUrlクラス利用時の注意点

川村です。お世話になっています。
HttpUrlクラスで、Swikiサイト全体にBasic認証がかかっている場合にPOSTメ
ソッドでアクセスする時の注意点についてご報告します。

HttpUrlでPOSTメソッドでアクセスする場合は、おおよそ次のようになります。
1)Basic認証がないとみなして1度POSTメソッドをWebサーバに投げる
2)Webサーバのレスポンスコードが401の場合,Basic認証がかかっているとして
ユーザにUser名、パスワードを問い合わせる。この内容を Authorization: ヘッ
ダに次の形式で埋め込んで再度POSTメソッドをWebサーバに投げる。
Authorization: Basic ********
注)'********'部分はuser:passwordをBase64エンコードしたもの
3)HTTPSocket class>>httpPost*は後述する理由により、常にレスポンスコード
401を返す。
4) 1)へ
というわけで、無限ループに落ち込んでしまいます。するとユーザはユーザ名か
パスワードが間違えていると勘違いする。

HTTPSocket class>>httpPost*が常にレスポンスコード401を返す理由:
SwikiはPOSTに成功すると別URLへリダイレクトさせます。しかし、HTTPSocket>>
httpPost*の実装はリダイレクト先のページ取得時に上記のAuthorization: ヘッ
ダをつけないまま、アクセスします。するとそのリダイレクト先も認証がかかっ
ているので401を返す。もともとはAuthorization: ヘッダをつけていたようです
が、その部分はコメントアウトされていました(なにか理由があったのでしょう
ね)。

★GETメソッドではリダイレクト先のページ取得時にもAuthorization: ヘッダを
付加するので問題ない。

それでは

-- 
--------------
Hideo Kawamura(川村 秀男)
http://squeak.qp.land.to/
http://blog.goo.ne.jp/hkawa90/ (blog)



-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.6.9 - Release Date: 2005/06/11

__________________________________
Save the earth
http://pr.mail.yahoo.co.jp/ondanka/




Squeak-ja メーリングリストの案内