CGI(シージーアイ、Common Gateway Interface)とは、ウェブサーバ上で動作するプログラムがウェブページを生成できるようにする仕組みです。
とあるのですが、という事はnode.jsのプログラムもCGIというくくりの中に入るのでしょうか??
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
似ていますが違います。
Wikipedia のページを見て貰うと分かるのですが
CGIプログラムはウェブサーバがクライアントからのリクエストに応じて起動する。
ここが違います。CGI はウェブサーバがリクエストを受け、そのリクエスト毎に小さなプログラムを起動します。そのプログラムは以下の情報をウェブサーバから貰います。
- 環境変数から HTTP のヘッダ情報を
- 標準入力から POST データを
- コマンドライン引数からリクエストパスを
そして色々な処理を行い HTML や画像など、ウェブサーバに応答する結果を HTTP ヘッダ付きで標準出力に吐き出します。ウェブサーバはその結果をブラウザに応答するという訳です。ですので CGI の実行にはウェブサーバ(例えば apache)が必須となります。また CGI プログラムはテキストの入出力だけ出来れば特にライブラリなど使わずに実装できる事になります。例えば簡単な CGI であれば以下の様な物になります。
#!/bin/sh echo "content-type: text/plain\n\nHello World"
かたや nodejs などはそれ自体がウェブサーバだと思って下さい。標準入出力やコマンドライン引数、環境変数など使わず起動済みのプログラム自らが HTTP プロトコルを解析して処理して応答すると思って貰えれば良いです。
上記に書いたウェブサーバとやり取りする仕組みの事を CGI と呼びます。
CGI プログラムはリクエスト毎に起動して応答を返した後で終了する事になるので、サーバ側で状態を保持した様なプログラムを作るには毎回データベースに問い合わせる必要があります。nodejs の場合であればこれがメモリで済む訳です。
投稿2017/08/23 01:04
編集2017/08/23 01:28総合スコア5030
0
いえ、CGIというのはプログラムとWebサーバのやりとりの規格です。
Node.jsはそれ自身をWebサーバとして動かすのが一般的なので、CGIによるやり取りはあまり使いません。
投稿2017/08/23 00:59
総合スコア145183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
<本来の意味>
Common Gateway Interfaceは、最後の単語がInterfaceなので分かる通り、インターフェース(システム間でデータのやり取り、機能の呼び出し方法等を定めた取り決め)です。
ブラウザからURLを指定してwebサーバにアクセスすれば、URLに対応するファイルの内容がブラウザに返されて、表示されます。
このファイルの内容を返す仕組みだけでは、サーバにデータをアップロードしたり、時々刻々変化するデータを取得したりすることができませんので、ブラウザからデータや操作指示を受け取り、サーバがそれを処理するプログラムを呼び出して、結果をブラウザに返す仕組みをサーバに組み込めるようになりました。
いろんな人がデータのやり取りの仕方などを勝手に決めると混乱するので、共通(common)する方式が決められました。サーバとそこから呼び出されるプログラムとの間の出入り口(gateway)に関するインタフェースなので、Common Gateway Interfaceと呼ばれている訳です。
CGIの規定(日本語対訳)にリンクをはっておきます。
Common Gateway Interface(RFC3875) 日本語対訳
==
<CGIプログラム>
サーバから呼び出されるプログラムは、CGIを介して呼び出されるので「CGIプログラム」と呼ばれます。そして、「CGIプログラム」を略してCGIと呼ぶ人が居ます。『ウェブサーバ上で動作するプログラムがウェブページを生成できるようにする仕組みです。』というのは「CGIプログラム」を説明したものです。
CGIが「CGIプログラム」を略したものである場合、「node.jsのプログラムもCGIというくくりの中に入る」ことになります。
CGIという言葉が、本来のCGIの意味で使われているのか、CGIプログラムの意味で使われているのかを判断しておかないと、訳が判らない状況になるので注意が必要です。
投稿2017/08/23 02:00
総合スコア6915
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。