Closed NaoyaFukuma closed 1 year ago
以下のスクリプトは、様々なシナリオをテストするために用意されています。
このスクリプトは、CGIスクリプト内で無限ループを発生させます。結果として、タイムアウトが発生し、親プロセスであるHTTPサーバーにより強制終了させられます。
このスクリプトは "/public_html/index.html" へのローカルリダイレクトを返します。この結果、クライアントにはホーム画面に相当するページが表示されます。
"/public_html/index.html"
std::cout << "Status: 302 Found\r\n"; std::cout << "Location: https://www.google.com/\r\n"; std::cout << "Content-type: text/html\r\n\r\n";
このスクリプトは、CGIレスポンスのヘッダーフィールドに Location を持ち、そのリダイレクト先が自分自身に設定されています。つまり、リダイレクトの無限ループが発生します。現状、リダイレクトの無限ループをHTTPサーバーが検知する機能は実装していません。
Location
このスクリプトは、POSTメソッドとGETメソッドを処理する。
POSTメソッド:
/upload/
GETメソッド:
CGIスクリプトのテスト
以下のスクリプトは、様々なシナリオをテストするために用意されています。
1. SelfLoopCgi.cgi
このスクリプトは、CGIスクリプト内で無限ループを発生させます。結果として、タイムアウトが発生し、親プロセスであるHTTPサーバーにより強制終了させられます。
2. LocalRedirectStatic.cgi
このスクリプトは
"/public_html/index.html"
へのローカルリダイレクトを返します。この結果、クライアントにはホーム画面に相当するページが表示されます。3. ClientRedirect.cgi
4. SelfRedirect.cgi
このスクリプトは、CGIレスポンスのヘッダーフィールドに
Location
を持ち、そのリダイレクト先が自分自身に設定されています。つまり、リダイレクトの無限ループが発生します。現状、リダイレクトの無限ループをHTTPサーバーが検知する機能は実装していません。5. UploadCgi.cgi
このスクリプトは、POSTメソッドとGETメソッドを処理する。
POSTメソッド:
/upload/
ディレクトリとします。/upload/
ディレクトリ及び配下のリソース自体はルーティング対象とならず、CGIスクリプトからのみアクセス可能とします。GETメソッド:
/upload/
ディレクトリ配下のファイルを取得し返します。/upload/
ディレクトリ配下のファイル一覧を返します。