On Web Connectionデータベースメソッドは以下のケースで呼び出されます:
- Webサーバが /4DCGI/ から始まるURLを受信した。
- Webサーバが無効なリクエストを受信した。
詳細な情報は、後述の“On Web Connection データベースメソッド呼び出し” の段落を参照してください。
互換性に関する注意: コンテキストモードでコンテキストが作成されたときもデータベースメソッドは呼び出されます。コンテキストモードは廃止予定のモードで、変換されたデータベースで利用できます。
データベースがWebサーバとして公開され、リクエストは事前にOn Web Authenticationデータベースメソッドで受け入れられていなければなりません(存在する場合)。
On Web Connectionデータベースメソッドは6つのテキスト引数を受け取ります。これらの引数の内容は以下のとおりです:
引数 | 型 | 説明 |
$1 | テキスト | URL |
$2 | テキスト | HTTPヘッダ + HTTPボディ (32 KBまで) |
$3 | テキスト | Webクライアント (ブラウザ) のIPアドレス |
$4 | テキスト | サーバのIPアドレス |
$5 | テキスト | ユーザ名 |
$6 | テキスト | パスワード |
これらの引数を以下のように宣言しなければなりません:
- URL
最初の引数 ($1) は、ユーザがWebブラウザのアドレスエリアに入力したURLからホストのアドレスを取り除いたものです。
イントラネット接続の場合をみてみましょう。4D WebサーバのIPアドレスを123.4.567.89とします。以下の表はWebブラウザに入力されたURLに対して、$1が受け取る値を示しています:
Webブラウザのアドレスに入力された値 | $1の値 |
123.4.567.89 | / |
http://123.4.567.89 | / |
123.4.567.89/Customers | /Customers |
http://123.4.567.89/Customers | /Customers |
http://123.4.567.89/Customers/Add | /Customers/Add |
123.4.567.89/Do_This/If_OK/Do_That | /Do_This/If_OK/Do_That |
この引数は必要に応じて自由に利用できます。4Dは単にURLのホスト部より後の部分を$1に渡します。
例えば値 "/Customers/Add" が “直接新規レコードを[Customers] テーブルに追加する”ということを意味するというような、オリジナルのルールを作成できます。Webユーザにデータベースを公開し、利用可能な値やブックマークを提供できます。アプリケーションの異なる部分へのショートカットを提供できます。このようにして、Webユーザはデータベースに接続するたびにナビゲーションを通過することなく、素早くWebサイトのリソースにアクセスできます。
警告: 以前のセッションで作成されたブックマークでデータベースに再入力されることを防ぐため、4Dは標準の4D URLに対応するURLをすべてキャッチします。
- HTTPリクエストのヘッダとボディ
2番目の引数 ($2) はWebブラウザから送信されたHTTPリクエストのヘッダとボディです。この情報はOn Web Connectionデータベースメソッドにそのまま渡されることに留意してください。その内容は接続を試みたWebブラウザの仕様により異なります。
Mac OS上のSafariでは、以下のようなヘッダを受け取るでしょう (一部省略):
GET /favicon.ico HTTP/1.1
Referer: http://123.45.67.89/4dcgi/test
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr-fr) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10
Cache-Control: max-age=0
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: 123.45.67.89
Windows上のMicrosoft Internet Explorer 8では、以下のようなヘッダを受け取るでしょう:
GET / HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: ja-JP
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
Accept-Encoding: gzip, deflate
Host: 123.45.67.89
Connection: Keep-Alive
アプリケーションでこの情報を使用するには、開発者がヘッダとボディを解析しなければなりません。
注: パフォーマンスの理由から、このデータのサイズは32KBで切り取られます。
- WebクライアントのIPアドレス
$3 引数はブラウザマシンのIPアドレスを受け取ります。この情報を使用して、イントラネットアクセスとインターネットアクセスを区別できます。
- サーバIPアドレス
$4 引数はWebサーバを呼び出すために使用されたIPアドレスを受け取ります。4Dバージョン6.5以降マルチホーミングがサポートされ、複数のIPアドレスを持つマシンで使用できるようになりました。詳細はWebサーバー設定を参照してください。
- ユーザ名とパスワード
$5 と $6 引数は、ブラウザが表示する標準の認証ダイアログにユーザが入力したユーザ名とパスワードを受け取ります。このダイアログは環境設定でパスワード管理オプションが指定されていると、接続のたびに表示されます (接続セキュリティ参照)。
注: ブラウザから送信されたユーザ名が4Dに存在する場合、$6 引数 (ユーザパスワード) はセキュリティのため渡されません。
は4DCGI URLまたはカスタマイズされたコマンドURLを使用したWebサーバーへのアクセスのエントリポイントとして使用できます。
警告: インタフェース要素を表示する4D コマンド (ALERT, DIALOG...) を呼び出すと、メソッド処理が終了します。
は以下のケースで呼び出されます:
- 4Dが /4DCGI/ URLを受け取ったとき。$1に /4DCGI/<action> が渡されて、データベースメソッドが呼び出されます。
- <path>/<file>タイプのURLで存在しないWebページが呼び出されたとき。データベースメソッドにそのURLが渡されて呼び出されます (*)。
- <file>/ タイプのURLでWebページが呼び出され、デフォルトのホームページが設定されていないとき。データベースメソッドにそのURLが渡されて呼び出されます (*)。
(*) 特定のケースでは、$1に渡されるURLはスラッシュ"/"で始まりません。