Web開発のための基礎知識

HTTP構成の処理 (WRKHTTPCFG)

HTTPサーバーを STRTCPSVR *HTTP によって開始させることがわかっても、これだけでは System i の
コンテンツをWebで公開することができません。どの部分を公開できるのかや、どのように公開するかは
「HTTP構成」 によって決まります。
HTTP構成は

コマンド: WRKHTTPCFG[実行キー]

によって次のように表示されます。HTTP構成は 元来、IBMオリジナルHTTPサーバーが使用しますが、
EnterpriseServer が提供するHTTPサーバーである「Alaska」も、このHTTP構成によって構成されます。

WRKHTTPCFG を使用するには、
ユーザー・プロフィールに *IOSYCFG 権限が必要となります

自分が使用しているユーザーに *IOSYSCFG 権限が無い場合は QSECOFR を使用してください。
また、先に解説したように WRKHTTPCFG で実際の入力/修正を行う場合には CCSID = 5035 が必要です。
よって、その場合の WRKHTTPCFG の使用は

CHGJOB CCSID(5035)
WRKHTTPCFG
CHGJOB CCSID(5026)
CHGJOB CCSID(65535)

の順に行わなくてはなりません。もちろん PCOMM も 939 日本語英数小文字拡張 」 で使用します。

WRKHTTPCFG の内容

WRKHTTPCFG によって表示される内容は下記のように長いものですが恐れる必要はありません。
この内容は物理ファイル QUSRSYS/QATMHHPC、メンバー CONFIG の内容が表示されているだけです。
また、各行の先頭に文字 「 # 」 であるのは、それが コメント行 であることを意味しています。
そうして良く眺めてみるとほとんどはコメント行であることがわかります。
( WRKHTTPCFG の記述はOS/400リリースによって多少、異なります。)

WRKHTTPCFG

WRKHTTPCFG の内容のほとんどがコメント行であることがわかったところでコメント行をはずした有効な
行だけを下記に紹介します。その中でも理解しておかなければならないことは、そう多くはありません。

WRKHTTPCFG での有効な行を抽出したもの

この中で AddIconAddType は省略値としてはじめから記述されていますので特に理解を求める
必要はありません。すると、これらを除いた次の行だけが理解の対象となります。

WRKHTTPCFG で記述する必要があるもの

こうして見るとかなり対象が絞られてきましたので見やすくなりました。

HostName  218.44.135.18

System i のIPアドレスを指定します。Alaskaを使用する場合はこの指定は必須です。

Port                        80

通常、HTTPサーバーは PORT番号=80 なのでこの指定が必要です。
Alska は開始時点でPORTの指定ができますので、この指定は無視されます。

Enable                     GET
Enable                     HEAD
Enable                     POST

ブラウザが入力値を投入する命令として GET, POST, HEAD などが使用されますが、
それらを使用可能にするためには Enable の指定が必須です。
通常 HEAD を使用することは滅多にありませんが GETPOST だけは Enable にしておいてください。

Map      /cgi-bin/*  /cgi-bin/*.pgm
Exec     /cgi-bin/ /QSYS.LIB/CGIBIN.LIB/*

MapExec の対は CGI の記述を定義します。
Map/cgi-bin/* とは /cgi-bin/..... とURLで入力された値は/cgi-bin/*.pgm
解釈することを意味します。例えば /cgi-bin/CGI001 は /cgi-bin/CGI001.pgm と内部では
変換されます。さらに

Exec /cgi-bin/* /QSYS.LIB/CGIBIN.LIB/*

と定義されていますので、これは/QSYS.LIB/CGIBIN.LIB/CGI001.PGM と解釈されます。つまり、

/cgi-bin/CGI001  /QSYS.LIB/CGIBIN.LIB/CGI001.PGM

と内部では解釈されます。

このような変換を行うのは URLに表示されるCGI のありかなどをブラウザを眺めている使用者から
隠蔽するためです。悪意のある第3者からの保護と考えてよいでしょう。

Pass /AS400-NET.USR/*
Pass /QATMHSTOUT/*
Pass /cgi-bin/*

Pass はブラウザからのアクセスを許可するIFS のディレクトリーを記述します。
Pass が定義されていないと、いくら静的なHTMLを System i のIFSに保管しておいても外部からは
見ることはできません。Pass /AS400-NET.USR/* とは、ディレクトリー /AS400-NET.USR以下の
ディレクトリーへのアクセスをすべて許可することを意味します。
EnterpriseServerを使用するにはこの3つのPass記述が必須です。

DefaultFsCCSID 5026
DefaultNetCCSID  943

省略値のCCSIDが 5026 であることを指定します。

DnsLookup Off

HTTPサーバーが DNSサーバーを探しに行かないように設定することによって、HTTPサーバーの動作を
早くすることができます。