CGIでリダイレクトを行うときにGETメソッドではなくPOSTメソッドで送信するには?

[上に] [前に] [次に]
ゆうと [E-Mail] 1999/12/21(火) 17:16:57
IDチェックのプログラムを作っているのですが
CGIで受け取ったデータをリダイレクトして
他のCGIにそのデータを送りたいのですが
この際にGETメソッドではなくPOSTメソッドとして送りたいのです。
何か方法がありましたらお教えください。

きたむら 1999/12/22(水) 05:02:55
このへん理解が浅いのでおそるおそる書きますが、IDチェックCGIの中でソケットを開いて、目的のCGIと交信すれば可能なはずです。
#もっと単純な方法があったらすみません。ていうかぜひ教えてくださーい。

ふじ 1999/12/22(水) 15:33:30
リダイレクトとはちょっと違うけど、JavaScriptを使って良いのなら

<BODY onLoad="document.f.submit()";>
<FORM action="他のCGI" name=f method="POST">
<INPUT type="HIDDEN" name="hoge" value="fuga">
<INPUT type="submit" value="飛ばないときは押してね">
</FORM>

というようなHTMLを出力して、サブミットさせることは出来ます。
JavaScript を切ってると飛びませんけど。

他には、きたむらさんの仰るように、IDチェックCGI が内部で
他の CGI へ POST でデータを送信して、その結果を取得して
ユーザへ返す、というような仕組みを作るとか。

この場合、ユーザには IDチェックCGI が結果を返してきたように
見えます。
#ブラウザの URL 表示欄には IDチェックCGI のが表示されたまま。

ゆうと 1999/12/22(水) 17:30:12
みなさん、ありがとうございます。

ふじさんのおっしゃるようにhtmlを書いて
自動的にジャンプさせてやればPOSTで送ることは可能なのですが
実際問題としてリダイレクトなので
ユーザーには何を送っているか全くわからない状態で
送信しなくてはなりません。
だからブラウザにファイルの形式で
読ませてしまってはいけないようなのです。

なにぶん私も代理なのではっきりとはわかっていないのです。
プログラマとも話してどのようなプログラムで
GETメソッドで送っているのか聞いてみます。

ふじ 1999/12/22(水) 18:20:01
> 実際問題としてリダイレクトなので
意味がよく分からないんですけど・・・
Location ヘッダを出力してブラウザにリダイレクトさせたいのであれば、
POST でデータを送信することは出来ません。

Location でリダイレクトする場合 (ステータスコード 302) は、
一時的にこのページは移転しているからこっちの URL を「見てね」(=GETしてね)
という意味だからです。

> プログラマとも話して
直接本人に書き込みしてもらった方が早いかも(^^;

[上に] [前に] [次に]