Locationヘッダで?以降を表示しないようにするには?

[上に] [前に] [次に]
佐藤 1999/10/27(水) 10:07:34
二度目の質問になります、佐藤です。

CGIから出力するLocationヘッダなのですが、CGIの有るURLにデータを渡そうとすると
print "Location: http://www.xxx.com/zzz.cgi?data=1\n\n";
と書くことになってしまい、WWWブラウザに表示されるURLにデータ内容が表示されてしまいます。

自分としては、WWWブラウザに表示されるURLは
http://www.xxx.com/zzz.cgi
で、zzz.cgiには「data=1」が渡っているようにしたいのです。

ページ閲覧者がSUBMITボタンを押したりする場合には、POSTメソッドを使えば事足りるのですが、CGI内から別のURLのCGIにデータを渡す際に上のように、データをURLから隠蔽する手段が無いものでしょうか?

Locationヘッダを使う方法に限らず、実現できる方法が有れば教えてください。
よろしくお願いします。

andi 1999/10/27(水) 12:58:03
cookieとかファイルに書き出すとか。

佐藤 1999/10/27(水) 14:46:05
Cookieだとページの閲覧者が拒否すると駄目ですし、ファイルだとどう実現すればいいか分かりません。
折角アドバイスを頂いたのに申し訳ないのですが、他に方法が有れば引き続きお願いします。

無責任官庁 1999/10/27(水) 15:34:30
佐藤さん、もう少し教えてください。
Locationヘッダを出力するCGIが aaa.cgi、
aaa.cgi から起動される側のCGIが zzz.cgi だとします。

1)ブラウザには、aaa.cgi が表示されて欲しいですか?
2)それとも、zzz.cgi が表示されて欲しいですか?

1の場合は、これ→ http://www.tohoho-web.com/wwwperl1.htm#ExecCommand
を使うことで実現できます。(open か systemか、好きな方)
2の場合は・・・結構面倒な案しか思い浮かばないので、
答えを聞いてからにします。(^-^;)

・・・ひょっとして、起動する側とされる側、別なサーバーにあるんです?
(これってかなり重要で必要な情報だよ)
だとしたら、open,systemの案はボツですね。

佐藤 1999/10/27(水) 16:36:05
無責任官庁さんの質問の回答は2(zzz.cgiが表示されてほしい)です。

Locationヘッダを出力する側と、Locationで指定される側のCGIは、同じサーバーに有る場合も、違うサーバーに有る場合も、両パターン有ります。

厄介な質問で申し訳ありません、もう少しお付き合いいただければ幸いです。

hiro-kim 1999/10/27(水) 18:51:15
私はプログラミングのテクニックがないので。机上の空論として聞いてみてください。

HTTP Locationヘッダの仕組みをきちんと言葉にすると,aaa.cgi が zzz.cgi を起動しているのではなくって,

1.aaa.cgi がWebブラウザに向けて HTTP Locationヘッダ文字列を送る
2.Webブラウザが GETメソッドで http://……/zzz.cgi を取りに行く

というのを自動化しておこなうのですよね。それならば,

1.aaa.cgi がWebブラウザに向けて <form method="post" action="zzz.cgi">と渡したいHIDDENデータを含む HTML文字列を送り込む
2.Webブラウザ側のJavaScriptで onLoad イベントなどで自動的にsubmitボタンを押させる

とすれば実現できそうな気がするのですが。

無責任官庁 1999/10/28(木) 01:36:44
hiro-kimさんに一票。
スクリプトが無効になってると意味無いけど。

他にもありそうな気がしたんだけど、ウルトラCっぽいんで却下。
(そこまでしてzzz.cgiを表示しなきゃいけない理由が無いんで)

「ファイルで渡す」案もアリかと思うけど、
http://www.xxx.com/zzz.cgi?file=991027123
みたいに最低限一時的に作ったファイル名を渡さないといけないよ。

佐藤 1999/10/28(木) 08:58:42
[[解決]]
hirokimさん、無責任官庁さん、ありがとうございました。

JavaScriptを使う案については、Cookieと同じくページ閲覧者がJavaScriptの機能を無効にしていると通用しないのでちょっと。

これ以上、案を出してくださる方に対して「これじゃ駄目だ」というのは申し訳ないので、ここで打ち切りにします。
zzz.cgiのみをURLとしてWWWブラウザに表示したかったのは、あくまで見栄えの問題なので。

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