• 締切済み

リファラーの取得方法

プログラム系は初心者なので、うまく説明できるか不安ですが困っています。(>_<)よろしくお願いします。 サイトにアクセス制限(htaccess)をかけて、あるドメイン経由しか閲覧できないようにしました。(直接URLを打ち込んでの閲覧不可) ページにjavascriptを記述したのですが、肝心のページが見れなくなってしまいました。 調べてみるとlocation.hrefはリファラが空になってしまうのでアクセス制限ではじかれるとの事でした。 これはものすごく困りました…。 色々考えてみたのですが、考え・調べて3日が経過し、お手上げ状態です。 分かる方、知恵を拝借出来ませんでしょうか。 スクリプト側は <script language="javascript"> function jump(f){ var sel1=f.mailb.value; if(sel1=="") return false; var url="http://www.xxx.cgi?cmd=xx&mode=$FORM{xx}&xx="+sel1; location.href=url; } </script> html側は <select> <option value="00">aaa</option> <option value="01">bbb</option> <option value="02">ccc</option> 省略 </select> <INPUT type="button" value="絞込" onClick="jump(this.form);return false"> このような感じです。 どんなスクリプトかというと、 例) http://www.test.coms/search.cgi?mode= 上記URLの=の後ろに、選択したセレクトメニューのvalueが入り 絞込みボタンをクリックしてlocatin.hrefで結果を表示するというしくみです。 色々試してみました。 例えば、セレクトメニューを <select> <option value="http://www.test.coms/search.cgi?mode=00">aaa</option> <option value="http://www.test.coms/search.cgi?mode=01">bbb</option> <option value="http://www.test.coms/search.cgi?mode=02">ccc</option> 省略 </select> こんな感じにしてみてダイレクトに飛ばすとか。 しかし、これも結局はlocatin.hrefを使用しないといけませんでした。 どんな方法でもいいです。 リファラーを取得してそれをどのような方法かでクリック時に伝えるとか、location.hrefの代わりのスクリプトを使用するとか・・・。 参考になるかわかりませんが、リファラ実験ページを見つけました。 親切な方に感謝(>_<) http://www.teria.com/~koseki/memo/referrer/ さらに、対応策らしきものも http://d.hatena.ne.jp/takuya_1st/20070321 ただし、あまり理解できておりません。 長くなりましたが何卒よろしくお願い申し上げます。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

javascriptで処理をするのは得策ではないかと。 サーバーサイドの処理でセッションを張ってやるとか必要では?

akataro333
質問者

補足

有難うございます! 「サーバーサイドの処理でセッションを張る」という具体的な方法が全く分からないので、調べてみました。 今まで関わったことのないような情報ばかりなので、恐らく私には出来ないと思います・・・。せっかく教えてくれたのにすいません。 もう少し頑張って調べてみます。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>サイトにアクセス制限(htaccess)をかけて、あるドメイン経由しか閲覧でき >ないようにしました。(直接URLを打ち込んでの閲覧不可) リファラが「特定のドメイン」「自サイト」に加えて「ない」場合も許可してやってください。 「リファラがない」アクセスを許可する方向にしないと、いろいろ問題が出てくると思います。セキュリティソフトなどでリファラを出さない環境(使用者は意識していないことが多い)では閲覧できません。またBookmarkも拒否することになります。

akataro333
質問者

補足

ご回答有難うございます! 現在こんな感じでアクセス制限してます↓ SetEnvIf Referer "^http://www\.xxx\.com" ShowOK SetEnvIf Referer "^http://www\.xxx\.jp" ShowOK order deny,allow deny from all allow from env=ShowOK リファラが「ない」場合はURLを直接打ち込むとアクセスできてしまうので、リファラなしは許可していないのです。 もし、「xxx.comからの経由であればリファラなしでもアクセス可能」 というような設定が出来れば嬉しいのですが、可能でしょうか? 何度も申し訳ございませんが、方法が分かればご教授ください。 よろしくお願いします。

関連するQ&A

  • プルダウンから飛んだページにアクセスする方法

    アクセスする事が出来なくて困っています。初歩的なもので申し訳ないのですが、よろしくお願いします。 <HTML> <HEAD> <TITLE> </TITLE> <script language="javascript"> <!-- function navi(obj) { url = obj.options[obj.selectedIndex].value; if(url != "") { location.href = url; } } //--> </script> </HEAD> <BODY> <form method=post> <select name="navi">  <option value a href="URL">リンク <option value a href="URL">リンク1 <option value a href="URL">リンク2 <option value a href="URL">リンク3 </select> <input type=button value="ジャンプ" onClick="location.href =(this.form.navi.options[this.form.navi.selectedIndex].value)"> </form> </BODY> </HTML>

  • リファラーの取得方法

    いつもお世話になっております。 今回も大変困ってしまし、質問をさせていただきます。 JavaScriptを使用してリファラを取得したいと考えており、 ネットや本を調べ、以下のように記述し、「Test.html」という名前で保存しました。 <script type="text/javascript"> //クッキーへ書き込み function SetCookie() { //リファラの取得 urlstring = document.referrer; //表示 window.alert(urlstring);           //クッキーへ書き込み document.cookie = "URL=" + escape(urlstring) + "; " + "expires=Fri,31-Dec-2030 23:59:59; "; } //呼び出し SetCookie(); </script> 「Test.html」と同じドメイン(サーバ)にあるWebページを表示した後、「Test.html」を表示するとリファラを取得でき、alertで表示できました。 しかし、「Test.html」異なるドメイン(このWebページがおいてないサーバ)のページを表示した後に「Test.html」のWebページにアクセスしても、リファラが取得できず、alertで表示できませんでした。 サーバが違っても、リファラは取得できるようなのですが、 どうしてこんな事態になったのか、どうにもわかりません。 どこか違っているのでしょうか? どうか教えてください。

  • javascript をhtmlページで使用する方法を教えてください。

    <form name=\"addr\"> リンク先-> <select name=\"list\" onChange=\"chg_url()\"> <option value=\"http://www.yahoo.co.jp\">yahoo1</option> <option value=\"http://www.yahoo.co.jp\">yahoo2</option> <option value=\"http://www.yahoo.co.jp\">yahoo3</option> </select> <a href=\"Dest\" target=_blank> リンク </a> </form> <script language=\"javascript\"> <!-- pos = 5555; for(num=0;num<document.links.length;num++) { if (document.links[num].href.indexOf(\"Dest\") != -1) { pos = num; num = 5000; } } function chg_url() { if (pos!=5555) { sel = document.addr.list.selectedIndex; document.links[pos].href = document.addr.list[sel].value; } } chg_url(); //--> </script> のスクリプトを同じページに何個も利用したいのですが、どうしたらうまくいきますか? 同じページにこのスクリプトを設置すると、全部同じページにリンクしてしまいます。java初心者なので、ぜひ教えてください。お願いします。 あと、「java」の質問回答の方に間違えて載せてしまいました。すみませんでした(>_<)

  • 複数プルダウンでメニューを初期表示に戻したい

    No.157334でleaz024さんに「複数プルダウンメニュー」について教えてもらったものですが、ひとつ、追加したいことがあるので教えてください。 教えていただいたスクリプトは <script language="javascript"> <!-- function A_Li() {   Sel=document.Link1.OP.selectedIndex;   Ms=document.Link1.OP.options[Sel].value;   parent.main.location.href=Ms;} function B_Li() {   Sel=document.Link1.OP2.selectedIndex;   Ms=document.Link1.OP2.options[Sel].value;   parent.main.location.href=Ms;} // --> </script> <FORM name="Link1"> <SELECT name="OP" onChange="A_Li()" size="1"> <OPTION Value="main.htm" SELECTED>ページを選んでください <option value="main.htm">ぺージ1</option> <OPTION Value="abc.htm">ページ2 <OPTION Value="def.htm">ページ3 </SELECT> <SELECT name="OP2" onChange="B_Li()" size="1"> <OPTION Value="aaa.htm" SELECTED>ページを選んでください <option value="bbb.htm">ぺージ1</option> <OPTION Value="ccc.htm">ページ2 <OPTION Value="ddd.htm">ページ3 </SELECT> です。 例えば OP2のメニューをクリックしたあと OP3のメニューをクリックしたときにOP2のメニューが初期の 表示メニューに戻したいのですが、どう変えればよいでしょうか。 初心者なので本を見てみたのですがわかりませんでした。 どうぞよろしくお願いいたします。

  • HTML ドロップダウンメニューのリンク先

    <SCRIPT LANGUAGE="JavaScript"> <!-- function Mylink(sel){ mlink=sel.options[sel.selectedIndex].value; if(mlink!="-"){ location.href=mlink; } } //--> </SCRIPT> <FORM method="post"> <select onChange="Mylink(this)"> <OPTION selected value="-">     ★ メニュー ★</OPTION> <OPTION value="-">------------------------</OPTION> <OPTION value="java_tokei1.html">時計の色と大きさをかえてみよう</OPTION> <OPTION value="java_hizuke.html">今日の日付を表示させよう</OPTION> <OPTION value="java_alert1.html">ボタンでアラートを表示させよう</OPTION> <OPTION value="java_back1.html">ボタンで背景の色をかえてみよう</OPTION> <OPTION value="java_link1.html">ボタンでリンクさせよう</OPTION> <OPTION value="-">------------------------</OPTION> </select> </FORM> 以上のようなドロップダウンメニューを入れたのですが リンク先を別ウインドウで開くことはできるでしょうか? _blankをどこかにいれられますでしょうか?

  • 同一ページに複数のプルダウンメニュー

    同一ページに複数のプルダウンメニューをつけたいのですが、 どうすればよいのでしょうか。 下記のように1つはつけることができたのですが、 2つめから、どこをどう変えて追加すればよいのかわかりません。 <script language="javascript"> <!-- function A_Li(){ Sel=document.Link1.OP.selectedIndex; Ms=document.Link1.OP.options[Sel].value; parent.main.location.href=Ms;} // --> </script> <FORM name="Link1"> <SELECT name="OP" onChange="A_Li()" size="1"> <OPTION Value="main.htm" SELECTED>ページを選んでください <option value="main.htm">ぺージ1</option> <OPTION Value="abc.htm">ページ2 <OPTION Value="def.htm">ページ3 </SELECT> よろしくお願いします。

  • IE以外のブラウザで対応するには

    超初心者です、見よう見まねで以下のような、セレクト1を選ぶとセレクト2は「選択」(2を選べばその逆)になる外部javascriptとhtmlを作ってみました。IEでは動く(option valueにリンクする)のですが他(サファリやファイアーフォックス)では全く動きません。どこか変なところがあるのでしょうか?それともIE以外では諦めなければならないでしょうか?ご教授の程、よろしくお願い致します。 #外部javascript(ファイルネーム select.js) var s; function reSel(c) { if(s&&(s!=c)) s.options[0].selected=true; s=c; } function A_Li() { parent.myNew.location.href=document.Link1.select1.options.value;   Sel=document.Link1.select1.selectedIndex;   Ms=document.Link1.select1.options[Sel].value; reSel(document.Link1.select1); } function B_Li() { parent.myNew.location.href=document.Link1.select2.options.value;   Sel=document.Link1.select2.selectedIndex;   Ms=document.Link1.select2.options[Sel].value; reSel(document.Link1.select2); } #以下 HTMLソース <script src="./select.js" type="text/javascript" ></script> <FORM name="Link1"> <select name="select1" onChange="A_Li()"> <option value= new.html selected>選択</option> <option value= aaa.html>aaa</option> <option value= bbb.html>bbb</option> <option value= ccc.html>ccc</option> </select> <select name="select2" onChange="B_Li()"> <option value= new.html selected>選択</option> <option value= ddd.html>ddd</option> <option value= eee.html>eee</option> <option value= fff.html>fff</option> </select> </FORM >

  • Stack overflow line at:0のエラーについて

    はじめまして。 先日も質問させていただき、見事に解決できたのでまた質問させていただきます。 タイトルにもあるのですが、連動プルダウンを使用したJavascriptでエラーが出てしまいます。ネットでも色々と調べ呼び出しのメモリが不足している、キャッシュが多いなど載っていましたが、どうもPCそのものの問題ではないようです。 それ以外では構文のエラーということだったのでフリーソフトのエラーチェックを行ったのですが、特に問題はなかったです。 プルダウンは全部で20個あり初めの4個は選択後に次のプルダウンに移行すると必ずStack overflowのエラーがでます。 不躾な質問で申し訳ないですが、何か問題があるのかご教授いただけないでしょうか? よろしくお願いします。 以下は構文になります。 <html> <head> <title>テンプレtest</title> <script type="text/javascript"src="ConnectedSelect.js"></script> <script> function Jump(f){ for(var i=0;i<f.length;i++){ if(f[i].type=="select-one" && f[i].value.match(/\.html?$/)){ window.open(f[i].value,'_blank'); break; } } } </script> </head> <body> <form> 項目1<select name="SEL1"> <option value="">-----------</option> <option value="aa">aa</option> </select> 項目2<select name="SEL2"> <option value="">-----------</option> <optgroup label="aa"> <option value="aa1">aa1</option> <option value="aa2">aa2</option>     <option value="bb1">bb1</option> </optgroup></select>              ・              ・              ・              ・ 項目20<select name="SEL20"> <option value="">-----------</option> <optgroup label="zz"> <option value="zz1">zz1</option> <option value="zz2">zz2</option>     <option value="***.html">***</option> </optgroup></select> <input type="button" value="Go" onClick="Jump(this.form)"> <script type="text/javascript">ConnectedSelect (['SEL1','SEL2','SEL3','SEL4','SEL5','SEL6','SEL7','SEL8','SEL9','SEL10','SEL11','SEL12','SEL13','SEL14','SEL15','SEL16','SEL17','SEL18','SEL19','SEL20']); </script> </form> </center> </body> </html>

  • プルダウン連動とリンク

    選択項目により連動するプルダウンを利用し、各々のページにリンクさせようと思っているのですが、上手くいきません。 一つ目のプルダウンで項目を選択⇒二つ目のプルダウンに項目が表示される⇒選択するとリンクする。 プルダウンはこちらのソースを利用しています。 http://d.hatena.ne.jp/Mars/20071109 連動リンクはこちらを参考にしました。 http://air.rulez.jp/shop/java/jt_pulldown.htm 現在のソースは下記のようになっています。 プルダウンの連動とリンク、それぞれ単体での動作確認は出来たのですが、組み合わせると上手くいきません。 最初のプルダウンで「YYY」を選択し、連動して次のプルダウンに表示される「yahooかgoogle」を選択したらURL先にリンクしたいのですが。 現在はプルダウンは連動はされるものの、2つめのプルダウンで項目を選択しても何も起こらない状態です。 ----------------------------------------------------------------- <script type="text/javascript" src="ConnectedSelect.js"></script> <form> <select id="SEL1"> <option value="XXX">XXX</option> <option value="YYY">YYY</option> </select> <select id="SEL2" onChange="top.location.href=value"> <optgroup label="XXX"> <option value="x1">x1</option> <option value="x2">x2</option> </optgroup> <optgroup label="YYY"> <option value="http://www.yahoo.co.jp/">yahoo</option> <option value="https://www.google.co.jp/">google</option> </optgroup> </select> </form> <script type="text/javascript"> ConnectedSelect(['SEL1','SEL2','SEL3']); </script> --------------------------------------------------------------- これはどのように修正すればリンクされるようになるでしょうか? また別の方法があればそちらでも構いません。 ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

  • セレクトメニューでリンクの際、targetの指定の方法

    2つのフレーム(上下)で分けたページで、上(top)・下(bottom)というフレーム名にしています。 上(top)にセレクトメニューを設置しリンクをはって、下(bottom)にhtmlを表示したいのですが、target="bottom"というのは、どこに入れたらいいのか。。。いろいろやってみたのですが、全く分かりません。 お分かりになる方、どうぞ教えて下さい。よろしくお願いいたします。 <SCRIPT type="text/JavaScript"> <!-- function moveUrl(selection){ var url=selection[selection.selectedIndex].value; if(url!=""){ location.href=url; } } //--> </SCRIPT> <FORM><SELECT onChange="moveUrl(this)"> <OPTION value="" selected">メニュー選択 </OPTION> <OPTION value="main1.html">概要 </OPTION> <OPTION value="main2.html">仕組み </OPTION>

専門家に質問してみよう