BinaryRead

(PWS4 IIS4 IIS5)
BinaryRead — POST 要求の一部としてクライアントからサーバーに送信されたデータを取得します。

variant = Request.BinaryRead( count )
variant:このメソッドが返す符合なしバイトの配列を含みます。このパラメータの型は、VT_ARRAY | VT_UI1 になります。これは、符号なし 1 バイト文字の可変配列です。
count:メソッドを実行する前に、クライアントから読み取るバイト数を指定します。メソッドを実行した後の count には、クライアントから正常に読み取ったバイト数が設定されます。実際にクライアントから読み取られるバイト数の合計は、 Request.TotalBytes と等しいか、またはこれより少なくなります。

説明

BinaryRead メソッドは、POST 要求の一部としてクライアントからサーバーに送信されたデータを取得します。このメソッドは、クライアントからデータを取得し、取得したデータをセーフ配列に格納します。セーフ配列は、次元の数と各次元の上限および下限に関する情報を含む配列です。

BinaryRead メソッドは、POST 要求の一部としてクライアントから送信された生のデータを読み取るときに使用します。BinaryRead メソッドは、データへの下位レベルのアクセスを行うときに使用するメソッドであり、Request.Form コレクションを使用して POST 要求で送信されたフォーム データを表示する場合などとは使用目的が異なります。BinaryRead を呼び出した後で Request.Form コレクション内のいずれかの変数を参照すると、エラーが発生します。同様に、Request.Form コレクション内の変数を参照した後で BinaryWrite を呼び出すと、エラーが発生します。このため、変数がどのサブコレクションに属しているかを指定せずに Request コレクション内の変数にアクセスする場合は注意が必要です。Request.Form コレクションが検索の対象になると、エラーが発生するからです。

例1.BinaryReadの例

次の例は、BinaryRead メソッドを使用して、要求の内容をセーフ配列に格納します。

1
2
3
4
5
6
<%
  Dim vntPostedData, lngCount

  lngCount = Request.TotalBytes
  vntPostedData = Request.BinaryRead(lngCount)
%>

TotalBytes、ClientCertificate、Cookies、Form、QueryString、ServerVariables も参照ください。


HasKeys

(PWS4 IIS4 IIS5)
HasKeys — 読み取り専用です。cookie にキーが含まれているかどうかを指定します。

Request.Cookies( cookie )[( key )|.HasKeys]
cookie:値を取得する cookie を指定します。
Key:cookie 辞書からサブキーの値を取得するために使用する省略可能なパラメータです。
説明

cookie が cookie 辞書であるかどうか (cookie がキーを持っているかどうか) を調べます。

1
<%= Request.Cookies("myCookie").HasKeys %>

myCookie が cookie 辞書であれば、上のスクリプトの値は TRUE に評価され、そうでなければ FALSE に評価されます。

Cookiesコネクション も参照ください。


TotalBytes

(PWS4 IIS4 IIS5)
TotalBytes — 読み取り専用です。クライアントが要求本体の中で送信した合計バイト数を指定します。

Counter = Request.TotalBytes
Counter:クライアントが要求の中で送信する合計バイト数を取得するための変数を指定します。
説明

TotalBytes プロパティは、クライアントが要求本体の中で送信した合計バイト数を指定します。このプロパティは、読み取り専用です。

例1.TotalBytesの例

次のスクリプトは、要求オブジェクトに含まれる合計バイト数を変数に設定します。

1
2
3
4
<%
  Dim bytecount
  bytecount = Request.TotalBytes
%>

BinaryRead も参照ください。


Count

(PWS4 IIS4 IIS5)
Count — コレクション要素の数を返す

Request.Contents.Count

説明

コレクション中の要素を返します。Countプロパティは数を表示しますが、Keyプロパティではコレクションの要素名を確認することができます。 ASP3.0(IIS5.0)では、RemoveメソッドやRemoveAllメソッドを実行することで、追加した変数を削除することもできます。

例1.Countの例

1
2
3
4
5
6
7
8
9
<%
    'アプリケーション変数をセットします。
    For i = 0 to 3
      Application("item" & i ) = "あいうえお"
    Next

    'コレクション要素の数を表示します。
    Response.Write Application.Contents.Count
%>

Remove,RemoveAllも参照ください。


ServerVariables

(PWS4 IIS4 IIS5)
ServerVariables — HTTP クエリ文字列内の変数の値を取得します。

Request.ServerVariables( server environment variable )
server environment variable:取得するサーバー環境変数の名前を指定します。次のいずれかの値を指定できます。

変数 説明
ALL_HTTP クライアントから送信されたすべての HTTP ヘッダーです。
ALL_RAW すべてのヘッダーを元の形式のままで取得します。ALL_RAW と ALL_HTTP との違いは、ALL_HTTP ではヘッダー名の前にプリフィックス “HTTP_” が付き、ヘッダー名が常に大文字に変換される点にあります。ALL_RAW では、ヘッダー名と値がクライアントから送信されたままの形で渡されます。
APPL_MD_PATH ISAPI DLL 用のアプリケーションのメタベース パスを取得します。
APPL_PHYSICAL_PATH メタベース パスに対応する物理パスを取得します。IIS は、この値を返すときに、APPL_MD_PATH を物理 (ディレクトリ) パスに変換します。
AUTH_PASSWORD クライアントの認証ダイアログに入力された値です。この変数は、基本認証が使用されている場合にのみ利用できます。
AUTH_TYPE 保護されたスクリプトにユーザーがアクセスしようとしたときに、サーバーがそのユーザーを確認するために使用する認証方法です。
AUTH_USER 元の形式のままの認証ユーザー名です。
CERT_COOKIE クライアント証明書の一意の ID が文字列として返されます。クライアント証明書全体の署名として使用できます。
CERT_FLAGS クライアント証明書が存在する場合は、bit0 は 1 に設定されます。
クライアント証明書の証明機関が無効な場合 (該当する証明機関がサーバー上の既知の CA の一覧に存在しない場合) は、bit1 は 1 に設定されます。
CERT_ISSUER クライアント証明書の Issuer フィールドです (O=MS、OU=IAS、CN=ユーザー名、C=USA)。
CERT_KEYSIZE SSL 接続キー サイズのビット数 (128 など) です。
CERT_SECRETKEYSIZE サーバー証明書秘密キーのビット数 (1024 など) です。
CERT_SERIALNUMBER クライアント証明書のシリアル番号フィールドです。
CERT_SERVER_ISSUER サーバー証明書の Issuer フィールドです。
CERT_SERVER_SUBJECT サーバー証明書の Subject フィールドです。
CERT_SUBJECT クライアント証明書の Subject フィールドです。
CONTENT_LENGTH クライアントから提供されるコンテンツの長さです。
CONTENT_TYPE コンテンツのデータ型です。HTTP クエリの GET、POST、PUT など、情報が既に添付されているクエリで使用されます。
GATEWAY_INTERFACE サーバーで使用する CGI 仕様のリビジョン番号です。”CGI/revision” という形式で示されます。
HTTP_<HeaderName> HeaderName に格納されている値です。この表に列挙されているもの以外の任意のヘッダーには、ServerVariables コレクションがその値を取得できるように、必ずその前にプリフィックス “HTTP_” を付ける必要があります。

注 サーバーは、HeaderName 内にあるアンダスコア文字 (_) のうち、実際のヘッダー部分にあるものをダッシュ記号 (-) として解釈します。たとえば、HTTP_MY_HEADER と指定した場合、サーバーは MY-HEADER として送られたヘッダーを探します。

HTTP_ACCEPT Accept ヘッダーの値を返します。
HTTP_ACCEPT_LANGUAGE コンテンツの表示に使用する言語を説明する文字列を返します。
HTTP_USER_AGENT 要求を送信したブラウザを説明する文字列を返します。
HTTP_COOKIE 要求に含まれている cookie 文字列を返します。
HTTP_REFERER リダイレクトが発生したときに、元の要求の URL を含む文字列を返します。
HTTPS 保護されたチャンネル (SSL) を経由して要求を受け取った場合は ON を返します。保護されていないチャンネルに対する要求の場合は OFF を返します。
HTTPS_KEYSIZE SSL 接続キー サイズのビット数 (128 など) です。
HTTPS_SECRETKEYSIZE サーバー証明書秘密キーのビット数 (1024 など) です。
HTTPS_SERVER_ISSUER サーバー証明書の Issuer フィールドです。
HTTPS_SERVER_SUBJECT サーバー証明書の Subject フィールドです。
INSTANCE_ID IIS インスタンスの ID を文字形式で表したものです。インスタンス ID が 1 の場合、1 が文字列として表示されます。この変数を使用すると、要求が属する (メタベース内の) Web サーバー インスタンスの ID を取得できます。
INSTANCE_META_PATH 要求に応答する IIS のインスタンスのメタベース パスです。
LOCAL_ADDR 要求を受け取ったサーバー アドレスを返します。これは、コンピュータに複数の IP アドレスがバインドされている可能性のあるマルチホーム コンピュータで、要求が使用したアドレスを特定する場合に重要な情報です。
LOGON_USER ユーザーがログインした Windows アカウントです。
PATH_INFO クライアントから提供される補足パス情報です。このサーバー変数 PATH_INFO と仮想パスを使用してスクリプトにアクセスできます。この情報が URL からのものである場合は、サーバーによってデコードされてから CGI スクリプトに渡されます。
PATH_TRANSLATED PATH_INFO が変換されたものです。パスをたどって必要な仮想パスと物理パスの間のマッピングを実行します。
QUERY_STRING HTTP 要求内の疑問符 (?) の後の文字列に格納されているクエリ情報です。
REMOTE_ADDR 要求を出したリモート ホストの IP アドレスです。
REMOTE_HOST 要求を出したホストの名前です。サーバーがこの情報を持っていない場合、サーバーは REMOTE_ADDR を設定してこの変数を空のままにします。
REMOTE_USER ユーザーから送信された、マップされていないユーザー名文字列です。これは、サーバーにインストールされている認証フィルタによって変更された名前ではなく、ユーザーから実際に送信された名前です。
REQUEST_METHOD 要求を出すために使用されたメソッドです。HTTP では GET、HEAD、POST などのメソッドがあります。
SCRIPT_NAME 実行されたスクリプトへの仮想パスです。このパスは自己参照 URL の場合に使用されます。
SERVER_NAME 自己参照 URL 内に出現する、サーバーのホスト名、DNS エイリアス、または IP アドレスです。
SERVER_PORT 要求が送られたポート番号です。
SERVER_PORT_SECURE 0 または 1 が格納される文字列です。保護されたポート上で要求が処理された場合は 1、そうでない場合は 0 になります。
SERVER_PROTOCOL 要求情報プロトコルの名前とリビジョン番号です。”protocol/revision” という形式で示されます。
SERVER_SOFTWARE 要求に応答してゲートウェイを実行するサーバー ソフトウェアの名前とバージョンです。”name/version” という形式で示されます。
URL URL のベース部分を示します。

説明

ServerVariables コレクションは、定義済み環境変数の値を取得します

ループを使用して個々のサーバー変数名を解析できます。たとえば、次のスクリプトはすべてのサーバー変数名を表形式で出力します。

1
2
3
4
5
6
<table BORDER="1">
<tr><td><b>Server Variable</b></td><td><b>Value</b></td></tr>
<% For Each strKey In Request.ServerVariables %>
<tr><td> <%= strKey %> </td><td>  <%= Request.ServerVariables(strKey) %> </td></tr>
<% Next %>
</table>

ClientCertificate、Cookies、Form、QueryString も参照ください。


QueryString

(PWS4 IIS4 IIS5)
QueryString — HTTP クエリ文字列内の変数の値を取得します。

Request.QueryString( variable )[( index )|.Count]
variable:HTTP クエリ文字列内にある、取得する変数の名前を指定します。
index:variable の複数の値のうちの 1 つを取得できるようにするための省略可能なパラメータです。1 ~ Request.QueryString( variable ).Count までの整数値を指定できます。

説明

QueryString コレクションは、ServerVariables コレクション内の変数 QUERY_STRING が解析されたものであり、QUERY_STRING の各変数を名前で参照することができます。Request.QueryString( parameter ) の値は、QUERY_STRING に出現するすべての parameter の値の配列になります。パラメータの値の数は、Request.QueryString( parameter ).Count を呼び出して調べることができます。変数に関連付けられているデータ セットが複数でない場合は、個数は 1 になります。変数が見つからない場合には、個数は 0 になります。
複数のデータ セットのうちの 1 つにある QueryString 変数を参照するには、index の値を指定します。パラメータ index には 1 ~ Request.QueryString( variable ).Count までの値を指定できます。index の値を指定せずに複数の QueryString 変数の 1 つを参照した場合、データはカンマで区切られた文字列として返されます。
Request.QueryString でパラメータを使用すると、サーバーはその要求に送られたパラメータを解析して、指定されたデータを返します。未解析の QueryString データがアプリケーションで必要な場合は、パラメータを指定せずに Request.QueryString を呼び出すことで取得できます。
ループを使用することで、クエリ文字列内のすべてのデータ値を解析できます。たとえば、次のような要求が送られたとします。

http://localhost/script/directory/NAMES.ASP?Q=Fred&Q=Sally

そして、Names.asp に次のスクリプトが記述されているとします。

1
2
3
4
5
<%
  For Each item In Request.QueryString("Q")
    Response.Write (item) & "<br />"
  Next
%>

すると、Names.asp には次のように表示されます。

1
2
Fred
Sally

上のスクリプトは、次のように Count を使用して記述することも可能です。

1
2
3
4
5
<%
  For i = 1 To Request.QueryString("Q").Count
    Response.Write Request.QueryString("Q")(i) & "<br />"
  Next
%>

Formコレクション も参照ください。


Form

(PWS4 IIS4 IIS5)
Form – POST メソッドを使用してフォームから HTTP 要求本体にポストされた、フォーム要素の値を取得します。

Request.Form( element )[( index )|.Count]
element:コレクションが値を取得するフォーム要素の名前です。
index:パラメータの複数の値のうちの 1 つにアクセスできるようにするための省略可能なパラメータです。1 ~ Request.Form( parameter ).Count までの整数値を指定できます。

説明

Form コレクションは、要求本体のパラメータ名別にインデックスが付けられます。Request.Form( element ) の値は、要求本体に出現するすべての element の値の配列になります。パラメータの値の数は、Request.Form( element ).Count を呼び出して調べることができます。パラメータに関連付けられている値が複数でない場合は、個数は 1 になります。パラメータが見つからない場合は、個数は 0 になります。
複数の値を持つフォーム要素のある値を参照するには、値を index で指定する必要があります。パラメータ index には 1 ~ Request.Form( element ).Count までの値を指定できます。index の値を指定せずに複数のフォーム パラメータの 1 つを参照した場合、データはカンマで区切られた文字列として返されます。
Request.Form でパラメータを使用すると、Web サーバーはその HTTP 要求本体を解析して、指定されたデータを返します。未解析のフォーム データがアプリケーションで必要な場合は、パラメータを指定せずに Request.Form を呼び出すことで取得できます。
注 ASP を使用し、100 KB を超えるデータのポストを行う場合、Request.Form は使用できません。100 KB を超えるデータのポストをアプリケーションが必要とする場合、Request.BinaryRead メソッドを使用してコンポーネントを記述することができます。
ループを使用することで、フォーム要求内のすべてのデータ値を取得できます。たとえば、ユーザーが要素 FavoriteFlavor に対して Chocolate および Butterscotch という 2 つの値を指定してフォームに入力した場合、次のようなスクリプトを使用してこれらの値を取得できます。

1
2
3
4
5
<%
  For i = 1 To Request.Form("FavoriteFlavor").Count
    Response.Write Request.Form("FavoriteFlavor")(i) & "<br />"
  Next
%>

※ フォームに同じ名前を持つオブジェクト (HTML SELECT タグなど) が複数含まれている場合、Form コレクションの項目は、選択された値すべてがカンマで区切られている一覧になります。

QueryStringコレクション も参照ください。


Cookies

(PWS4 IIS4 IIS5)
Cookies — Cookies コレクションで、HTTP 要求の中で送信された cookie の値を取得できます。

Request.Cookies( cookie )[( key )|.attribute]
cookie:値を取得する cookie を指定します。
Key:cookie 辞書からサブキーの値を取得するために使用する省略可能なパラメータです。
attribute:cookie に関する情報を指定します。指定できる属性パラメータはHasKeysを参照ください。
説明

cookie 辞書のサブキーにアクセスするには、Key に対応する値を指定します。Key を指定せずに cookie 辞書にアクセスすると、すべてのキーが 1 つのクエリー文字列として返されます。たとえば、MyCookie に First と Second という 2 つのキーがあるとき、Request.Cookies の呼び出しの中でこれらのキーをどちらも指定していないと、次の文字列が返されます。

First=firstkeyvalue&Second=secondkeyvalue

同じ名前を持つ 2 つの cookie がクライアント ブラウザから送信された場合、Request.Cookies はより深いパス構造を持つ方の cookie を返します。たとえば、2 つの cookie が同じ名前で、一方のパス属性が /www/、もう一方のパス属性が /www/home/ であるとすると、クライアント ブラウザは両方の cookie を /www/home/ ディレクトリに送信しますが、Request.Cookies は後者の方の cookie だけを返します。

例1.Cookiesの例

1
<%= Request.Cookies("myCookie") %>

ループを使用すると、Cookies コレクション内のすべての cookie や、cookie 内のすべてのキーを調べることができます。ただし、キーを持っていない cookie に対してループを使用した場合は何も出力されません。これを防ぐには、.HasKeys の構文を使用して cookie がキーを持っているかどうかを先にチェックしておきます。以上の例を次に示します。

1
2
3
4
5
6
7
8
9
10
11
<%
    For Each strKey In Request.Cookies
      Response.Write strKey & " = " & Request.Cookies(strKey) & "<br />"
      If Request.Cookies(strKey).HasKeys Then
        For Each strSubKey In Request.Cookies(strKey)
          Response.Write "->" & strKey & "(" & strSubKey & ") = " & _
            Request.Cookies(strKey)(strSubKey) & "<br />"
        Next
      End If
    Next
%>

Cookiesコネクション,HasKeys も参照ください。


ClientCertificate

(PWS4 IIS4 IIS5)
ClientCertificate — HTTP 要求の中で送信されたクライアント証明書に格納されているフィールドの値です。

Request.ClientCertificate( Key [SubField] )
Key:変数名/インデックス(取得する証明書フィールドの名前を指定します。クライアント証明書を構成しているフィールドは、以下のとおりです。)

Certificate
ASN.1 形式による、証明書のコンテンツ全体のバイナリ ストリームを含む文字列です。

Flags
クライアント証明書の補足情報となる一連のフラグです。次のフラグを設定できます。

ceCertPresent
クライアント証明書が存在します。

ceUnrecognizedIssuer
このチェインの最後の証明書は未知の発行者からのものです。

※ これらのフラグを使用する場合は、自分の ASP ページにクライアント証明書インクルードファイルをインクルードする必要があります。VBScript を使用している場合は cervbs.inc を、JScript を使用している場合は cerjavas.inc を、それぞれインクルードします。これらのファイルは \Inetpub\ASPSamp\Samples ディレクトリにインストールされています。

Issuer
サブフィールド値のリストからなる文字列です。サブフィールドには証明書の発行者に関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、”C=US, O=Verisign, …” などです。

SerialNumber
証明書のシリアル番号からなる文字列です。16 進バイト値をハイフン (-) で区切って ASCII 文字で表現したものです。たとえば、”04-67-F3-02″ などとなります。

subject
サブフィールド値のリストからなる文字列です。サブフィールドには証明書のサブジェクトに関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、”C=US, O=Msft, …” などとなります。

ValidFrom
証明書がいつから有効かを表す日付です。この日付は VBScript の形式に従い、各国対応設定によって変化します。たとえば、米国では 9/26/96 11:59:59 PM という形式になります。年の値は 4 桁の数値で表示されます。

ValidUntil
証明書の有効期限がいつ切れるかを表す日付です。年の値は 4 桁の数値で表示されます。

SubField
“Subject” または “Issuer” のどちらかのキーの中の個々のフィールドを取得するために使用する、省略可能なパラメータです。このパラメータはサフィックスとして Key パラメータの後に追加します。たとえば、”IssuerO”、”SubjectCN”、などとなります。次の表は、一般的な SubField の値のいくつかを示しています。

C 発行国名/地域名を指定します。

CN ユーザーの一般名を指定します (このサブフィールドは “Subject” キーと共に使用されます)。

GN 名前を指定します。

I イニシャルを指定します。

L 地域名を指定します。

O 企業名または組織名を指定します。

OU 部署名を示します。

S 州名または地方名を指定します。

T 役職名を指定します。

この表で列挙したもの以外の SubField 値については、それらの ASN.1 識別子によって識別できます。ASN.1 識別子の形式はピリオド (.) で区切られた数値のリストです。たとえば、”3.56.7886.34″ などとなります。
説明

ClientCertificate コレクションは、Web ブラウザが発行した要求から (X.509 規格で規定されている) 証明書フィールドを取得します。 Web ブラウザがサーバーへの接続で SSL3.0/PCT1 プロトコルを使用していて (つまり http:// ではなく https:// で始まる URL を使用していて)、サーバーが証明書を要求している場合、ブラウザは証明書フィールドを送信します。 証明書がまったく送信されない場合、ClientCertificate コレクションは EMPTY を返します。 ClientCertificate コレクションを使用するときは、クライアント証明書を要求するように Web サーバーを構成する必要があります。

ループを使用すると ClientCertificate コレクションのすべてのキーを解析できます。この例を次に示します。

例1.ClientCertificateの例

1
2
3
4
5
<%
    For Each strKey in Request.ClientCertificate
        Response.Write strkey & " = " & Request.ClientCertificate(strkey) & "<br />"
    Next
%>

次の例は、Subject キーを使って、クライアント証明書が提示されているかどうかを調べます。

1
2
3
4
5
<%
  If Len(Request.ClientCertificate("Subject")) = 0 then
    Response.Write("No client certificate was presented")
  End if
%>

次の例は、クライアント証明書を発行した企業の一般名を取得します。

1
2
3
<%
Response.Write Request.ClientCertificate("IssuerCN")
%>

次の例は、クライアント証明書のサブジェクトの組織名を調べます。

1
2
3
4
5
<%
  If (Request.ClientCertificate("Subject")="Msft") then
    Response.Write("Good Choice!")
  End if
%>

次の例は、クライアント証明書の有効期限を表示します。

1
2
This certification will expire on
<%= Request.ClientCertificate("ValidUntil") %>

次の例は、Flags キーを使用して証明書の発行者が既知であるかどうかを調べます。1 行目のインクルード ステートメントでは、このスクリプトで ceUnrecognizedIssuer という名前付きフラグを使えるようにしています。

1
2
3
4
5
6
<!--#include file="cervbs.inc" -->
<%
  If Request.ClientCertificate("Flags") and ceUnrecognizedIssuer then
    Response.Write "Unrecognized issuer"
  End If
%>

ServerBariablesコレクション も参照ください。