CGI

argv

CGI

argcでパラメータの数が取得できるということは、argvで各々のパラメータも取れる。パラメータaction.cで、こうすると、 '+'で繋いだ場合は'+'で繋いだ場合は、 各々のパラメータが取得できる各々のパラメータが取得できる。 一番最初の要素は、CGIまでのパ…

argc

CGI

C言語CGIの場合、main関数のargcは、"GETのクエリパラメータの数" + 1が入っている。パラメータ上記リンクはPerlだけど、C言語でも同じ。 ただし、argcがきちんと取得できるクエリには条件がある。 argc.htmlで、 <html> <head> <title>argc</title> </head> <body> <script type="text/javascript"> <!-- // --> </script> <form method="GET" action="/cgi-bin/action.cgi"> <input value="value1"> </form></body></html>

image/bmp

CGI

読み込みがバイナリファイルに対応したので、ビットマップファイルをアップロード出来るようにする。https://wa3.i-3-i.info/word15799.htmlaction.cで、レスポンスヘッダのContent-typeでfile_content_typeを出力するようにしているので、バイナリでもなん…

multipart/form-data(boundary)

CGI

テキストファイルの場合は、HTTPリクエストボディがNULL文字で切れる事が無いので、boundaryをstrstrで探していたが、バイナリファイルだとそうはいかない。https://www.ietf.org/rfc/rfc1867.txtmemcmpとfor文で、探索してる。 今回のHTTPレスポンスボディ…

multipart/form-data

CGI

multipart/form-dataの場合は、どうやってファイルを抽出するかというのが課題となる。POST - HTTP | MDNContent-type.htmlは、これまで通り、enctype="multipart/form-data"。 action.cは、"CONTENT_TYPE"が"multipart/form-data"かどうかチェック。 その後…

CONTENT_LENGTH

CGI

getenvに"CONTENT_LENGTH"を指定すると、HTTPのBodyのサイズを取得できる。enqlÌóMaction.cで、getenvに"CONTENT_LENGTH"を指定すると、ボディサイズが"文字列で"返ってくる。 CONTENT_LENGTH.htmlは、あまり変わらない。 ファイルを選択してsubmitするとフ…

CONTENT_TYPE

CGI

getenvに"CONTENT_TYPE"を指定すると、"Content-type"を取得できる。c++でcgi ー ファイルのアップロード ~ プログラムのメモaction.cで、getenvに"CONTENT_TYPE"を指定し、返ってきた文字列を出力。 CONTENT_TYPE.htmlは、ファイルだけ送る。 ファイルを選…

QUERY_STRING

CGI

一般の環境変数とは別に、CGIの環境変数をgetenvで取得することが出来る。6.1 QUERY_STRING CGIの仕様 - とほほのWWW入門getenvにQUERY_STRINGを指定してみる。として、 そのまま呼び出しだと、そのまま呼び出しだと、 何も表示されないように見えるが何も表…

Status

CGI

HTTPのステータスコードはStatusヘッダで返す。CGIの仕様 - とほほのWWW入門 CGI プログラムの改良案/ヘッダの書き方これだけはHTTPのヘッダではなく、CGI専用ヘッダ。 status.cで、 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ /* main</stdio.h>…

Location

CGI

CGIでリダイレクトをする場合は、Locationヘッダを出力するだけ。Locationヘッダを使ってジャンプする | beginners CGIlocation.cで、とする。 こう入力するとこう入力すると、 こっちにリダイレクトこっちにリダイレクト。 自動で302になるんだなあ・・・。…

text/plain

CGI

"Content-type: text/plain"にすると、プレーンテキストで解釈される。MIME タイプ (IANA メディアタイプ) - HTTP | MDNcontent_type.cを、にすると、 確かにHTMLとしては解釈されず、プレーンテキストとして解釈される。Sample/cgi/Content-type/text_plain…

text/html

CGI

"Content-type: text/html"にしておけば、HTMLとして解釈される。MIME タイプ (IANA メディアタイプ) - HTTP | MDNcontent_type.cを、とすると、 HTMLのリンクになってるHTMLのリンクになってる。 リンククリックでここに飛ぶしリンククリックでここに飛ぶし…

Content-type

CGI

ここからは、CGIについて扱っていく。 HTTPヘッダの"Content-Type"を付けるには、CGIプログラムにもそれを書かないといけない。 (大文字小文字を区別しないので、"Content-Type"でも"Content-type"でもいいけど、"Content-type"と書く人が多いなあ・・・。)C…