4D v16.3

WEB GET HTTP HEADER

ホーム

 
4D v16.3
WEB GET HTTP HEADER

WEB GET HTTP HEADER 


 

WEB GET HTTP HEADER ( header|fieldArray {; valueArray} ) 
引数   説明
header|fieldArray  テキスト, テキスト配列 in リクエストHTTPヘッダまたはHTTPヘッダフィールド
valueArray  テキスト配列 in HTTPヘッダフィールドの内容

説明   

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

このコマンドはWebプロセスで実行されるすべてのメソッド ( '/4DACTION'...によって呼び出されるメソッド、On Web AuthenticationデータベースメソッドまたはOn Web Connectionデータベースメソッド) 内から呼び出されます。
  • 1番目のシンタックス: WEB GET HTTP HEADER (header)
    このシンタックスを使用すると、次の結果 (例) が変数 header に返されます。
    "GET /page.html HTTP/1.0[CRLF]User-Agent: browser[CRLF]Cookie: C=HELLO"

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

  • 2番目のシンタックス: WEB 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: そのリクエストを発行した元のURL (例えば、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:=""
 WEB 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="@ja@") // 日本語 (ISO 639リストを参照)
       WEB SEND FILE("index_ja.html")
    :($language="@sp@") // スペイン語 (ISO 639リストを参照)
       WEB SEND FILE("index_es.html")
    Else
       WEB SEND FILE("index.html")
 End case

注: 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")
       WEB SEND FILE("home_site1.com")
    :($host="www.site2.com")
       WEB SEND FILE("home_site2.com")
    Else
       WEB SEND FILE("home_site.com")
 End case



参照 

WEB GET HTTP BODY
WEB SET HTTP HEADER

 
プロパティ 

プロダクト: 4D
テーマ: Webサーバ
番号: 697

This command can be run in preemptive processes

 
履歴 

初出: 4D v6.7
名称変更: 4D v13

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)