GET HTTP HEADER

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 6.7


GET HTTP HEADER (header|fieldArray{; valueArray})

引数説明
header|fieldArrayテキスト|テキスト配列リクエストHTTPヘッダまたはHTTPヘッダフィールド
valueArrayテキスト配列HTTPヘッダフィールドの内容

説明

GET HTTP HEADER コマンドは、現在処理されているリクエストのHTTPヘッダを含む2つの配列、または文字列のいずれかを返します。

このコマンドは非コンテキストモードのみで動作し、非コンテキストモードのWebプロセスで実行されるすべてのメソッド ( '/4DACTION'...によって呼び出されるメソッド、On Web Connection データベースメソッド または On Web Authentication データベースメソッド) 内から呼び出されます。GET HTTP HEADER コマンドがコンテキストモード内で呼び出された場合、空の文字列を返します。

1番目のシンタックス: GET HTTP HEADER (header)

このシンタックスを使用すると、次の結果 (例) が変数 header に返されます。

"GET /page.html HTTP\1.0"+Char(13)+Char(10)+"User-Agent: browser"+

Char(13)+Char(10)+"Cookie: C=HELLO"

Windows と Mac OS上で、各ヘッダーフィールドはCR+LF (キャリッジリターン+ラインフィード) シーケンスによって区切られています。

2番目のシンタックス: GET HTTP HEADER (fieldArray; valueArray)

このシンタックスを使用すると、次の結果がfieldArrayvalueArray に返されます。

fieldArray{1} = "X-METHOD" valueArray{1} = "GET" *
fieldArray{2} = "X-URL" valueArray{2} = "/page.html" *
fieldArray{3} = "X-VERSION" valueArray{3} = "HTTP/1.0" *
fieldArray{4} = "User-Agent" valueArray{4} = "browser"
fieldArray{5} = "Cookie" valueArray{5} = "C=HELLO"

* 最初の3つのアイテムはHTTPフィールドではありません。リクエストの最初の行の一部です。

HTTP標準に準拠するには、フィールド名を常に英語で記述します。

リクエストで使用可能ないくつかのHTTPフィールドを以下のリストに示します。

Accept: ブラウザが許可するコンテンツ

Accept-Language: ブラウザが使用するランゲージ。ブラウザ上で定義されたランゲージでWebページを選択できます。

Cookie: cookiesリスト

From: ブラウザユーザemailアドレス

Host: サーバ名またはアドレス (例えば、URLがhttp://mywebserver/mypage.htmlとすると、Host はmywebserverとなります) 。同じIPアドレスを示す複数の名前を管理することができます (バーチャルホスティング) 。

Referer: オリジナルのリクエスト (例えば、http://mywebserver/mypage1.html) 、つまり、前へ ボタンをクリックした際に表示されるページ。

User-Agent: ブラウザまたはプロキシの名前とバージョン。

例題

次のメソッドを使用して、あらゆるHTTPリクエストヘッダフィールドのコンテンツを取得します。

      `GetHTTPFieldプロジェクトメソッド 
      ` GetHTTPField (Text) -> Text
      ` GetHTTPField (HTTP header name) -> HTTPヘッダーコンンツ

   C_TEXT($0;$1)
   C_LONGINT($vlItem)
   ARRAY TEXT($names;0)
   ARRAY TEXT($values;0)
   $0:=""
   GET HTTP HEADER($names;$values)
   $vlItem:=Find in array($names;$1)
   If ($vlItem>0)
      $0:=$values{$vlItem}
   End if

・このプロジェクトメソッドが記述されると、以下のように呼び出しを行います。

      ` Cookieヘッダーコンンツ
   $cookie:=GetHTTPField("Cookie")

・ブラウザ上で設定されたランゲージに応じて、異なるページを送ることができます (例えば、On Web Connection データベースメソッド において) 。

   $language:=GetHTTPField("Accept-Language")
   Case of
      : ($language="@fr@")    `フランス語 (ISO 639リストを参照)
         SEND HTML FILE("index_fr.html")
      : ($language="@sp@")    `スペイン語 (ISO 639リストを参照)
         SEND HTML FILE("index_es.html")
      Else
         SEND HTML FILE("index.html")
   End case

Note: Webブラウザ上で複数のランゲージをデフォルトで定義することができます。ランゲージは"Accept-Language" フィールドでリストにされ、 ";" で区切られて示されています。文字列内でのランゲージの位置に応じて、その優先順位が定義されます。そのため、文字列内でのランゲージの位置をテストすることをお勧めします。

・以下は仮想ホストの例です (例えばOn Web Connection データベースメソッドにおいて) 。次の名前"home_site.com"、"home_site1.com" と "home_site2.com" は同じIPアドレス、例えば192.1.2.3.へ向けられています。

   $host:=GetHTTPField("Host")
   Case of
      : ($host="www.site1.com")
         SEND HTML FILE("home_site1.com")
      : ($host="www.site2.com")
         SEND HTML FILE("home_site2.com")
      Else
         SEND HTML FILE("home_site.com")
   End case

参照

GET HTTP BODY, SET HTTP HEADER.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次