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)