Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

Web ゲートウェイにより返される HTTP 応答ヘッダ

InterSystems IRIS® 内の Web アプリケーション (REST ベースのアプリケーションを含む) は、通常、完全な HTTP 応答ヘッダを構築する役割があることが前提となっています。パフォーマンス上の理由で、Web ゲートウェイは既定で、Web サーバを経由して以下のコンテンツと共に応答ヘッダをクライアントに直接ストリーム転送しています。この処理モードを、非解析ヘッダ (NPH) 方式といいます。Web ゲートウェイは、ホスト Web サーバに用意された専用の API 機能を使用して応答ヘッダを渡すことにより、ホスト Web サーバが応答ヘッダを制御できないようにしています。応答ヘッダの指示文の読み取りおよび解釈を行う必要があるのは、Web サーバではなくクライアントであることが前提です。

ただし、CSP エンジンで生成したヘッダの指示文に示される Web サーバベースの追加機能を呼び出すために Web サーバが応答ヘッダを解釈する必要がある場合、この前提は成り立ちません。例えば、応答を追加処理するために、出力フィルタを呼び出す場合です (圧縮や暗号化のユーティリティなど)。このような出力フィルタは、通常、非解析ヘッダ・モードの処理に従って返された CSP コンテンツに対しては機能しません。

クライアントに応答ヘッダを直接ストリーミングするのではなく、ホスト Web サーバ経由で応答ヘッダを明示的に渡すように、Web ゲートウェイに指示する機能が存在します。

この機能を使用するには、CSP ヘッダ指示文 CSP-nph: false を設定します。

この指示文は、OnPreHTTP() メソッドで設定する必要があります。以下に例を示します。

<script language=objectscript method=OnPreHTTP arguments=""
returntype=%Boolean>
Do %response.SetHeader("CSP-nph", "false")
Quit 1 </script>

false に設定すると (Web ゲートウェイの既定の設定は true)、CSP-nph 指示文によって、CSP エンジンから返された応答ヘッダによって、応答の種類がホスト Web サーバに適切に通知されるようになります。その結果、必要に応じて以降の処理が可能になります。これが解析ヘッダ・モードです。

Web ゲートウェイが解析ヘッダ・モードで動作している場合、ホスト Web サーバが応答ヘッダを解釈し、場合によっては独自のヘッダ指示文を追加します。少なくとも、Server ヘッダを応答に追加します。次に例を示します。

Server: Apache/2.0.48 (Win32)

または以下のようになります。

Server: Microsoft-IIS/5.1

この機能は、Web サーバ API に対して直接機能する Web ゲートウェイ実装を使用する場合にのみ適用されます。つまり、CGI 以外はすべて適用されます。

Web ゲートウェイの CGI モジュールを使用するときにこの機能が必要な場合、NPH バージョンではない CSP CGI モジュールを使用するように Web サーバを構成する必要があります。例えば、nph-CSPcgi ではなく CSPcgi を使用します。CGI モジュール名で使用する接頭辞 nph- は、モジュールによって返される応答ヘッダの読み取りおよび解釈が不要であること (つまり、非解析ヘッダ・モードで動作していること) を Web サーバに伝える標準的な手段です。

これらのモジュールの解析バージョンと非解析バージョンとの本質的な違いは、HTTP 応答ステータス行の作成方法にあります。これはヘッダ・ブロックの先頭行です

解析ヘッダの場合、HTTP ステータス行の形式は以下のようになります。

Status: <status_code>

例:

Status: 200 OK

非解析ヘッダの場合、HTTP ステータス行の形式は以下のようになります。

HTTP/1.1<status_code>

例:

HTTP/1.1 200 OK

Web ゲートウェイで提供される CGI モジュールは、これらの相違を内部で自動的に処理します。CSP エンジンは常に、標準の HTTP ヘッダ・ブロック (2) を返します。

"アプリケーション・パスの追加" の [Non-Parsed Headers] パラメータも参照してください。

FeedbackOpens in a new tab