github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/net/http/cgi/host.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // このファイルは、CGIのホスト側(ウェブサーバーの親プロセス)を実装しています。 6 7 // パッケージcgiは、RFC 3875で指定されているCGI(Common Gateway Interface)を実装しています。 8 // 9 // CGIを使用すると、各リクエストを処理するために新しいプロセスを起動することを意味しますが、 10 // これは通常、長時間実行されるサーバーを使用するよりも効率が低いです。 11 // このパッケージは、主に既存のシステムとの互換性を保つためのものです。 12 package cgi 13 14 import ( 15 "github.com/shogo82148/std/io" 16 "github.com/shogo82148/std/log" 17 "github.com/shogo82148/std/net/http" 18 ) 19 20 // HandlerはCGI環境でサブプロセス内で実行可能なプログラムです。 21 type Handler struct { 22 Path string 23 Root string 24 25 // DirはCGI実行可能ファイルの作業ディレクトリを指定します。 26 // Dirが空の場合、Pathのベースディレクトリが使用されます。 27 // Pathにベースディレクトリがない場合、現在の作業ディレクトリが使用されます。 28 Dir string 29 30 Env []string 31 InheritEnv []string 32 Logger *log.Logger 33 Args []string 34 Stderr io.Writer 35 36 // PathLocationHandlerは、CGIプロセスが"/"で始まるLocationヘッダーの値を返す場合に、内部リダイレクトを処理するためのルートHTTP Handlerを指定します。これは、RFC 3875 § 6.3.2で指定されていますが、おそらくhttp.DefaultServeMuxになるでしょう。 37 // もしnilの場合、ローカルURIパスを持つCGIレスポンスがクライアントに送信され、内部リダイレクトは行われません。 38 PathLocationHandler http.Handler 39 } 40 41 func (h *Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request)