headでファイル情報を取得する場合のRefererは?

このQ&Aのポイント
  • Refererは送信されずアクセス制限がかけられる可能性がある
  • URL直接入力でtxtが表示できるためセキュリティに問題がある
  • CGIでRefererの送信方法や特定のURLのCGIからのみアクセスを許可する方法はあるか
回答を見る
  • ベストアンサー

headでファイル情報を取得する場合のRefererは?

($type, $length, $time, $expires, $server) = head "http://www.example.jp/test.txt"; このような形でhead情報を取得する場合にRefererは送信されていないのでしょうか? example.comからexample.jpのtxtファイルを読みに行く際に、example.jp側のhtaccessでRefererによるアクセス制限をかけるとexample.comをokにしていても蹴られてしまいます。 SetEnvIf Referer "^$" ref_okにすると読めるのでheadでの情報の取得の際にはRefererが送信されていないのではないかと考えています。 ただこれだとURL直接入力でtxtが表示できるのでセキュリティの意味はありません・・・ CGIプログラムが情報を取得する際(headでもconnectでも)先にRefererの送信ができれば可能な気がしますが、そんなことができるのかわかりません。 CGIでRefererの送信方法もしくは特定のURLのCGIからのみアクセスを許可するなどのアクセス制限方法などありませんか?

  • Perl
  • 回答数1
  • ありがとう数1

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

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

headってLWP::Simple::headですよね? > CGIでRefererの送信方法 リファラを設定するにはLWP::UserAgentじゃないとできないようです。 http://www.google.co.jp/search?hl=ja&q=lwp+referer&lr=lang_ja http://www.ksknet.net/perl/lwpuseragent_we.html

shokun83
質問者

お礼

my $arr = $ua->simple_request($req); my $arr = $arr->content; こんな感じで取得したデータを書き出すことで全て解決しました! ありがとうございました。

shokun83
質問者

補足

use LWP::Simpleをuse LWP::UserAgentに変更し、 my $req = HTTP::Request->new(GET => 'http://www.example.jp/test.txt'); $req->referer('http://www.example.jp'); my $res = $ua->request($req); my $time = $res->last_modified; にて更新時間を取得することに成功しました。ありがとうございます。 ただ、@date = stat("test.txt")でローカルのファイルと時間比較して内容を取得するかプログラムしていて、取得する際のsocket、connectあたりでこけているようで、今度は内容の取得に手間取っています。 一度送信したrefererはどこまで有効なのでしょう。。。

関連するQ&A

  • htmlにコードを貼り、リファラーを取得したい

    外部のhtmlページに以下のコードを貼り付け、リファラーとアクセスページを取得しようと思っているのですが、うまくいきません。 ▼ htmlページに貼り付けたコード(外部サーバ) <script type="text/javascript" src="http://example.com/script.php"></script> ▼ script.php の 中身(自サーバ) $access_url= 'http://' . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI]; $referer_url = $_SERVER["HTTP_REFERER"]; [現在の状態] $access_url の中身 = http://自サーバのドメイン/script.php $referer_url の中身 = http://コードを貼り付けたページ 色々と試行錯誤してこの形になったのですが、完全に行き詰ってしまいました。 方向性だけでも良いので、どなたかご教授いただけませんでしょうか。 よろしくお願いいたしますm( _ _ )m

    • ベストアンサー
    • PHP
  • Referrerはなぜ取得できるのですか?

    現在、ネットワークの勉強中です。 Referrerという環境変数でユーザが直前にどこのHPにアクセスしていたかという情報が埋め込まれてるみたいなんですが、これは、ブラウザがこの情報を記憶していて、ユーザのブラウザからサーバは情報を取得しているのでしょうか? あと、Referrerという環境変数はなぜ必要なんでしょうか?

  • window.openでreferer情報を取得する方法

    アクセスログ解析で、サイト内の遷移分析をしたいのですが window.openで展開しているページでは、 referer情報がアクセスログに出力されず 遷移が追えません。 refererを取得する方法はありますでしょうか? 宜しくお願いします。

  • 特定のリファラーのみリダイレクトでURLを指定したい(.htaccessの書き方)

    自分の管理外のWebサイトA,B,Cから"example.com"のトップページへ リンクされています。リンク元のURLは変更できないので、A,B,Cの 特定のページからのリファラーのみ"1.html"へリダイレクト(301) したいと思っています。※URLは全てダミーです リンク元 http://site-a.jp/a.html http://site-b.jp/b.html http://site-c.jp/c.html 現在のリンク先 http://example.com/index.html 移転先 http://example.com/1.html 【私が書いた.htaccessの内容】 SetEnvIf Referer "^http://site-a\.jp/a\.html" ref_a Redirect permanent /index.html http://example.com/1.html env=ref_a これではエラー500が返ってしまいだめでした。移転前と移転先は 同じなので、できればA,B,Cをまとめてセットして、リダイレクト の行は1つにしたいと思っています。無理なら1つずつ書きます。 よろしくお願い申し上げます。

  • .htaccess Refererによるアクセス制限で更新したときについて

    .htaccess Refererによるアクセス制限を以下のようにして行い特定のサイトからのアクセスを拒否するようにました。 SetEnvIf Referer "^http://www\.abc\.jp" ref_ng order allow,deny allow from all deny from env=ref_ng 普通にhttp://www\.abc\.jpからアクセスしたときはちゃんと拒否してくれるのですがページを更新したときIE7だと表示されてしまいます。 Firefoxは更新してもエラーを返してくれるのですが…。 IEでもFirefoxと同じように更新してもエラーを返すようにできませんでしょうか? ちなみに403を404として返すようにもしています ErrorDocument 403 /hoge.php http://questionbox.jp.msn.com/qa2628919.html?StatusCheck=ONを参考にしました。

  • httpとhttps リファラーも暗号化されるの?

    ブラウザでサイトにアクセスする場合、 普通にhttpでwebサーバへアクセスするとUser-Agentやリファラーなどの情報が平文のまま送信されますが、httpsでアクセスした場合はUser-Agentやリファラーなどヘッダ情報もSSLで暗号化されてサーバへ送信するのでしょうか?それともヘッダは平文のまま? 我ながら呆れるのですが、検索しても見つけきれない。。 まだまだ検索できないほど理解が足りてませんです。 どなたかよろしくお願いします。

  • リファラーの取得方法

    プログラム系は初心者なので、うまく説明できるか不安ですが困っています。(>_<)よろしくお願いします。 サイトにアクセス制限(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 ただし、あまり理解できておりません。 長くなりましたが何卒よろしくお願い申し上げます。

  • リファラーとキャリア判定

    サイト製作に伴い、アクセスログからリファラーを調べたいと思っています。 ただ、携帯サイトも同一URLで展開していることもあり、index.htmlではなく、index.cgiにしてキャリア判定して分岐するという手段を取っています。 バナー広告を出した日よりアクセスが目に見えて増え、それは良いのですがアクセス解析にかけたところ、大半がDirect(ブックマーク)扱いされているようです。 それまでのアクセス数から見ても、ちょっとおかしいのではないかと思うのですが、もしかしてcgiだとリファラーが取れなかったりするのでしょうか? 使用している解析ソフトはwebalizerです。

    • ベストアンサー
    • CSS
  • フレームページで HTTP_REFERER

    よろしくお願いいたします。 初心者ながらもHPを立ち上げ、Free配布のcgiもいくつか設置したのですが、 アクセス解析のcgiで、機能等に非常に満足のいくcgiが、参照元を取得するのに 「HTTP_REFERER」を使っていました。 私のHPは、フレームを使っておりまして、「HTTP_REFERER」では参照元が取得 出来ません。 どのようにすればよろしいのでしょうか?? ちなみに私の使っているサーバーは、HPとcgiが別サーバーとなっています。 解析するページからは『<img~~』で呼び出しています。

    • ベストアンサー
    • CGI
  • アンカーテキストの取得は可能ですか?

    CGI等でホームページのアクセス元の情報(リファラーと呼ばれているもの)を取得するものがありますが、アクセスされたリンクのアンカーテキスト(リンクテキスト)を取得する方法はありませんか?

専門家に質問してみよう