アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在 xxx.cgi?para1=aaa&para2=bbb
といったようにパラメータを渡して動いているCGIがあります。
このCGIの変更は無理な状況で(仕様変更にお金がかかるので...)
渡しているパラメータを隠したいと思っています。

とりあえず考えたのがもうひとつ別のCGIを作って
そこでJava Scriptで本来のURLに飛ばす処理でしたが、
JavaScriptを無効にされたり、リンク先を保存されたりしたらわかってしまいます。

何かいいアイデアはないでしょうか?

A 回答 (5件)

送信方法をGET→POSTに変更すれば問題ないのでは?

    • good
    • 0
この回答へのお礼

みなさんの回答からGET→POSTで解決することはわかりましたが、その記載方法が...
(詳細は#2の補足欄にかかさせていただきます)

お礼日時:2003/06/09 14:37

送信方法をGET→POSTに変更すれば見えません。


ただし、CGIの変更が必要です。

HTMLをフレームで囲い、フレーム内の情報として表示すればまったく見れなくできます。この場合はHTML,CGI含めて大改造が必要です。

外部に発注する時に、最初から見えないようにしてもらえば、簡単だったんですが...

この回答への補足

みなさん、早速のご回答ありがとうございました。
すみません、まとめてお礼申し上げます。

現在は xx?para=1 といったアンカー指定のため単純なリンクでよかったのですが、
POST指定した時にどうしたらいいのかで手詰まっています。
いろいろ検索はしているものの、CGIの基本がなっていない自分では、
[送信]ボタンを設置したPOST指定しか見つけることができませんでした。

具体的には、<a href=xxxx?para=1>で単純にリンク指定しているものを
名前"para" 値"1"で今作っているCGIにPOSTで送りたいです。

FORM文(INPUT type等)について具体的な例で説明していただけるとありがたいです。

よろしくお願いいたします。

補足日時:2003/06/09 14:37
    • good
    • 0
この回答へのお礼

お礼欄で申し訳ありません。
ちょっとわかりづらいかと思い一応補足いたします。

あるページのリンクがすべて
 bunseki.cgi?para=joho-A1&para=joho-A2
 bunseki.cgi?para=joho-B1&para=joho-B2
といった感じで、bunseki.cgiに投げられています。
bunseki.cgiはこのパラメータを元にJava Scriptで自動に飛ぶhtmlを生成します。

しかし「para=joho-A1&para=joho-A2」この中には見られたくない情報もありこのリンク先を隠したいです。
ですが、このCGIに修正を加えることはできません。

で、今回自分が行ったのは、以下のCGIを作成しそこにリンク
 link.cgi?link=1
CGIの中でこの「link=1」といった一般的には意味のない情報を本来のリンクを結びつけて
JavaScriptを生成し、元のCGIに飛ばすものでした。

そのときに生成するJavaScriptから結局見られたくないURLがわかってしまうという問題が発生しています。

よろしくお願いいたします。

お礼日時:2003/06/09 14:59

POSTにすればみえません。

    • good
    • 0
この回答へのお礼

みなさんの回答からGET→POSTで解決することはわかりましたが、その記載方法が...
(詳細は#2の補足欄にかかさせていただきます)

お礼日時:2003/06/09 14:37

<form method="POST" action="cgi-bin/xxx.cgi">


<input type=hidden name="para1" value="aaa">
<input type=hidden name="para2" value="bbb">
<input type="submit" value="送信">
</form>
これで送信ボタンを押せば、cgiの後ろに見えずに遅れます。ただし、HTMLのソースを見れば解ってしまいますが...
ボタンが出ないほうがいいのであればJavaScriptを併用して以下のように記述してみてください。

<HTML>
<HEAD>
<script type="text/javascript">
function _Send()
{
window.F1.submit();
}
</script>
</HEAD>
<BODY>
<FORM method="POST" action="cgi-bin/xxx.cgi" name="F1">
<input type=hidden name="para1" value="aaa">
<input type=hidden name="para2" value="bbb">
</FORM>

<a href="Javascript:_Send()">押してね</a>

</BODY>
</HTML>

これで、表示される「押してね」をクリックすると、_SendというJavaScript関数がコールされ、自動的にポストされます。(確認してないので動くか不明...)

この回答への補足

すみません。ここの#4お礼欄のCGIでいけたと思ったのですが、
元ページにフレームを使っている事で新たな問題が出てきました。

上下2つのフレームに分かれていて、下のフレームの中で例のCGIを呼び出しているのですが、
「target=_blank」で新たなウィンドウを表示しています。
これで例のCGIを呼び出すと空白のページしか表示されません(ToT)
POSTの指定方法でも結構ですので、「target=_blank」で新たなウィンドウでCGI生成のHTMLを表示する方法を
ご教授願いますでしょうか。

よろしくお願いいたします。

補足日時:2003/06/10 17:54
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
送信ボタンの方は正常に動作いたしました。
今回は現行の<a href=...>のリンク指定が要件になるので、
「_Send」関数のほうを試してみました。
で結果は、ieやOperaでは動いたのですが、MozillaやNetscape4.7xでは動作しませんでした。
#自分のところはNetscapeが大半を占めるので...。

そこで、JavaScriptのgoto関数を使うことにしました。

 <script type="text/javascript">
 function goto1(){
  location.href = link.cgi?link=1";
 }
 </script>
  :
 <a href="Javascript:goto1()">押してね</a>

そして今まで通りGETで処理。
JavaScriptを無効にしても、そもそもリンクが出来なくなるのでOKでした。
ただ無効にされて直接CGIを入力さされると見えてしまうので、
HTTP_REFERERで呼び出し元をチェックすることしました。

[戻る]ボタンで1つ前に戻ることができるのも要件だったので、これも一応クリアしました。

_SendのJavaScript関数がかなりヒントになりました。
ありがとうございました。

何か抜けがあったらご指摘下さい。

お礼日時:2003/06/10 09:45

<FORM method="POST" action="cgi-bin/xxx.cgi" name="F1" target="_blank">



でできませんか?
意味が違うのかな。

そのCGIはPOST、GETどちらでも引数が読み出せるようになっているのでしょうか?
この、method="POST"をmethod="GET"に置き換えて実行してみてください。GETで動作してPOSTで動作しない場合は
CGIの修正が必要です。
下記参考URLにGETとPOST時の引数のとり方が載っています。

参考URL:http://tohoho.wakusei.ne.jp/wwwcgi3.htm#CgiParam …

この回答への補足

アドバイスありがとうございます。

><FORM method="POST" action="cgi-bin/xxx.cgi" name="F1" target="_blank">
>でできませんか?
>
ボタンを設置した場合は大丈夫なのですが、
#4のお礼で記載しているようになぜかMozillaやNetscapeでは
window.xxx.submit() が動作してくれません。

POST指定でボタンを設置しない方法でsubmitが有効になる方法(もしくはsubmit以外を使う方法)
がわかればいいのですが...。

ちなみに、GETですが、こちらは単にリンク先cgiに?para=aaでパラメータを渡していて、
そのCGIで「QUERY_STRING」を持ってきています。
(元のhtmlで「method="GET"」と指定している訳ではないです)
このパラメータ渡しでのtarget指定の方法がわからないです。
本当ならJavaScriptを多用せずtarget指定で記載したいのですが、
無理なようであればJavaScriptでもいいと思ってます。

この場合のJavaScriptわからないなりに調べて
window.openで('link.cgi?para1=aaa','_blank')
とかしてみたのですが、
元のウィンドウが[object]という表示になってしまいます。
これがクリアできればパラメータ渡しでOKなのですが...。

よろしくお願いいたします。

補足日時:2003/06/11 10:13
    • good
    • 0
この回答へのお礼

すみません。
補足欄にかいた
>window.xxx.submit() が動作してくれません。
>
ですが、
 window.document.xxx.submit()
でNetscapeでも動作しました。
お騒がせいたしました。

これで、POST指定で問題なくいけそうです。
何度もありがとうございました。

お礼日時:2003/06/11 10:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!