• ベストアンサー

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の場合はリファラーは取得できないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

リファラーは取得できませんので、わたしなら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にリファラーの値が入ります。

volvo850love
質問者

補足

ご回答ありがとうございます。 私がリファラーによっておこないたいことはsample.cgiへの外部からのアクセスを拒否したいのです。 ですからおっしゃるような感じではだめなんです。 すみません。

その他の回答 (4)

回答No.5

下記を別々にしてみてはどうでしょうか。 ・windowを開く ・画面を遷移する ----- /* 開くだけ */ window.open("","new","width=500,height=250"); ----- <A href="sample.cgi" target="new" onClick="OpenWin();">オープン</A>

回答No.4

私もつい最近同じことで悩みました。 OSやブラウザによってはwindow.openでもリファラが取れるんですが、WIN+IEではダメのようですね。 <A href="sample.cgi" target="_blank">オープン</a> として、sample.cgiのボディタグに <body onload="window.resizeTo='500,250'"> ではダメですか? アドレスバーとかは残っちゃいますが…。

volvo850love
質問者

お礼

なるほど。やはりだめなんですね・・・ ><body onload="window.resizeTo='500,250'"> >ではダメですか? アドレスバーとかは残っちゃいますが…。 いえそこまでのこだわりはないので、そのようにしてももちろんかまわないですが。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

window.open は、新しくウィンドウを開くのでリファラーは得られないように思いますが・

volvo850love
質問者

補足

新しい窓を開くということであればtarget=_blankもそうですがこの場合リファラーとれますよね。 window.openにかぎっては取得できないのでしょうか?

  • Jodie0625
  • ベストアンサー率30% (397/1288)
回答No.1

参照できるかできないか以前に、シンタックスミスしてるように見受けられます。 sample.cgiの後に、「"」が足りないように思えます。 これを加えてからだと、どういう動作しますか? window.open("sample.cgi","new","width=500,height=250");                ↑

volvo850love
質問者

補足

"は単に書き損じです。すいません。実際はあります。