2010年10月18日月曜日

proxy経由だと自宅subversionに接続できないことも

自宅に用意した subversion ですが、
とある外部から接続しようとした場合、proxy 経由だと接続できませんでした。
※ 2010.10.26 追記。https化することで proxy 経由でも接続できるようになりました。
    詳細は、こちら を参照下さい。

subclipse で接続しようとすると以下のようなエラーメッセージが出力されます。

RA layer request failed
svn: OPTIONS of 'http://www.xxx.yyy.zzz/svn/test_proj': 200 OK (http://www.xxx.yyy.zzz)

subversion の FAQ (http://subversion.apache.org/faq.html#proxy) を見ると、
以下の2つを確認せよとのことです。
  1. "%APPDATA%\Subversion\servers ファイルで Proxy 接続先を設定する。

  2. Proxy サーバーで、以下のHTTPメソッドが使用可であることを確認する。
    PROPFIND, REPORT, MERGE, MKACTIVITY, CHECKOUT。

1. を実施した上で、上記エラー・メッセージだったので、
おそらく、Proxy サーバーの設定の問題だと思っています。

それにしても、Eclipse 自体にも Proxy 設定があるので、
subclipse がそちらを使用せず、独自に設定を持っているのは、ちょっと不思議な感じです。。

Proxy サーバーの設定は、変更することも、確認することもできないので、
あきらめることにしました (ノ_・。)

proxy 経由だと、うまくいかないことがあるので要注意です。


2010/10/19追記。

ちなみに、コマンド・プロンプトから、
telnet コマンドで、Proxy が許可する HTTP メソッドを確認できます。

確かに、proxy サーバーから、405 で弾かれています。

青字が入力部分です。

> telnet [proxyサーバー] [proxyポート番号]

OPTIONS http://www.xxx.yyy.zzz/svn/test_proj/ HTTP/1.1
host:www.xxx.yyy.zzz
Authorization: Basic dXNlcjpwYXNzd29yZA==


HTTP/1.1 405 Method Not Allowed.
Allow: HEAD, GET, POST, CONNECT
Cache-Control: no-cache
Pragma: no-cache
Expires: Tue, 19 Oct 2010 09:34:33 GMT
Last-Modified: Tue, 19 Oct 2010 09:34:33 GMT
Content-Length: 1469
Content-Type: text/html
Accept-Ranges: bytes
Connection: close
Date: Tue, 19 Oct 2010 09:34:33 GMT
Server: proxy-server-xyz

~ボディ部省略~


Basic 認証時は、リクエスト・ヘッダーに Authorization を含めます。
値は ユーザー名:パスワード (間にコロン)を Base64 に変換します。

Base64の変換は以下のサイトを使用させて頂きました。

  Base64変換 - http://www.ahref.org/app/base64/base64.cgi

上記例では、user:password を Base64 に変換して、dXNlcjpwYXNzd29yZA== を指定しています。