katsutoshi ito
itou.****@rens*****
2004年 8月 27日 (金) 10:42:27 JST
Shiro Kawai wrote: > ここは混乱が多いところなので、整理しておきましょう。 > > uriを含むHTML文書を作成する場合の順序は、 > > (1) uriを構成する各要素 (パス名のコンポーネントや、 > queryの属性名、属性値等) に対してuri-encodeをかける。 > (2) uriの要素をくっつける (ここで、query-stringのセパレータである'?'や'&'、 > fragmentのセパレータである'#'が挿入される。これらのセパレータは > uri-encodeしてはいけない) > (3) html-encodeする > > HTMLを受け取り、uriを解釈する側の順序はこの逆で、 > > (1') html-decodeする > (2') uriを要素毎に切り離す > (3') uriの各要素についてuri-decodeする > > となります。但し、cgiの場合は受け取るのがhtmlではないので、 > 上記(2'), (3')の手順だけです。(1')はクライアント側で行われます。 > > 順番を間違えると、「たいていは動くけどたまに動かない」という嫌な > バグに悩まされることになります。 ますます低次元戦に持ちこんで申し訳ないのですが、 html-encode/decode ってのは関数ではなく html:foo 関数群を適用すること と解釈して良いですか?最初リファレンスマニュアル見てて無いから typo かと思ってました。 あと、クライアントというのは web ブラウザのことかと思ってたんですが、 違ってますか?いや、実は > となります。但し、cgiの場合は受け取るのがhtmlではないので、 > 上記(2'), (3')の手順だけです。(1')はクライアント側で行われます。 これの意味がまだ理解できてないです。 ブラウザ http server (apache etc.) CGIスクリプト =========================================================================================== 1.)hoge.cgiをリクエスト => 2.)リクエストから cgi を呼び出す => 3.)実行してHTML 文書生成 6.)HTML 文書を解釈して <= 5.)そのままHTML文書をブラウザへ <= 4.)生成した HTML 文書を 画面上に表示する 送信する http server へ渡す この流れでいうとクライアントってブラウザのことかと思っているのですが 「cgi の場合は受取るのが html でない」という一文の意味に確信が持ててないです。 これは cgi は HTML 文書(タグのついているアレ)でデータを受取らず、 GET リクエストなら環境変数 QUERY_STRING に"?var=val&var2=val2" が渡り、 POST リクエストなら標準入力から読んだ時点で "var=val&var2=val2" と いった値で受取る?ということを指しておられますか? つまり、こういった形で CGI が受取れているのはすでに html-decode がされて (つまりタグが外されて中味だけが)渡ってくるから? で、この html-decode はブラウザがやっているという意味と捕らえて良いのでしょうか?