- ベストアンサー
JavaScriptのwindow.openでリファラーが取得できない。
<SCRIPT language="JavaScript"> <!-- function OpenWin(){ window.open("sample.cgi,"new","width=500,height=250"); } // --> <A href="#" onClick="OpenWin()">オープン</a> 上のようにsample.htmlのページ内にwindow.openのJavaScriptを書いています。 sample.cgi内に$ENV{'HTTP_REFERER'}を埋め込んでいるのですがリファラーが取得できません。 window.openの場合はリファラーは取得できないのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
リファラーは取得できませんので、わたしならJavaScriptでリファラーを取得してそれをCGIに渡します。。 <SCRIPT language="JavaScript"> <!-- function OpenWin(){ window.open("sample.cgi?ref=" + document.referrer, "new", "width=500,height=250"); } // --> 後はsample.cgiの中で use CGI qw(:standard); $ref = param('ref'); とすれば$refにリファラーの値が入ります。
その他の回答 (4)
- kotobukie
- ベストアンサー率50% (2/4)
下記を別々にしてみてはどうでしょうか。 ・windowを開く ・画面を遷移する ----- /* 開くだけ */ window.open("","new","width=500,height=250"); ----- <A href="sample.cgi" target="new" onClick="OpenWin();">オープン</A>
- toyota_sera_1990
- ベストアンサー率33% (64/191)
私もつい最近同じことで悩みました。 OSやブラウザによってはwindow.openでもリファラが取れるんですが、WIN+IEではダメのようですね。 <A href="sample.cgi" target="_blank">オープン</a> として、sample.cgiのボディタグに <body onload="window.resizeTo='500,250'"> ではダメですか? アドレスバーとかは残っちゃいますが…。
お礼
なるほど。やはりだめなんですね・・・ ><body onload="window.resizeTo='500,250'"> >ではダメですか? アドレスバーとかは残っちゃいますが…。 いえそこまでのこだわりはないので、そのようにしてももちろんかまわないですが。 ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
window.open は、新しくウィンドウを開くのでリファラーは得られないように思いますが・
補足
新しい窓を開くということであればtarget=_blankもそうですがこの場合リファラーとれますよね。 window.openにかぎっては取得できないのでしょうか?
- Jodie0625
- ベストアンサー率30% (397/1288)
参照できるかできないか以前に、シンタックスミスしてるように見受けられます。 sample.cgiの後に、「"」が足りないように思えます。 これを加えてからだと、どういう動作しますか? window.open("sample.cgi","new","width=500,height=250"); ↑
補足
"は単に書き損じです。すいません。実際はあります。
補足
ご回答ありがとうございます。 私がリファラーによっておこないたいことはsample.cgiへの外部からのアクセスを拒否したいのです。 ですからおっしゃるような感じではだめなんです。 すみません。