上田さん、
Cookieのやりとりもトレースログで確認できますから、それも見ながらやってみるとよいと思います。
IWAさん、中田さん ありがとうございます。
残念ながらアクセス制限は、形だけでもつけないといけないので・・・。
なんとか頑張ってみます。
cookie認証も勉強してみます。
上田さん、
ノートンでどうすればいいのかはノートンの説明を読むべき話でしょう。
少し検索すれば、
http://sakae21.fc2web.com/norton/
というページもあります。
もっとも、ノートンを止めてもだめだということですから、原因は別でしょうね。
ブラウザからのリクエストは、 AN HTTPD の場合はトレースログ(trace.log)で見ることができるのですから、それで調べてみるのがよいと思います。
関係すると思われるのは、ブラウザのキャッシュと、それに関係する AN HTTPD の「表示/インデックス」の Pragma: no-cache と Last-Modified くらいかと思います。
本来の目的については、確かに HTTP_REFERER に依存するのはあまりよいとは思えません。 Iwa さんが言うように Cookie を使う方法が一般的だと思います。
Cookie を使って認証同様のことをやる方法は「Cookie 認証」ぐらいをキーワードにして自分で調べてくださいね。
他の方法としては、すべて CGI を通して表示するようにするとかというのもあると思いますが、メンテがしにくいかもしれません。
一番いいのはアクセス制限などしないということだと思います。
上田さんへ
HTTP_REFERER のもともとの情報はブラウザが出すわけですから、ノートンを入れる・入れないで HTTP_REFERER の情報が(個人情報保護のために)変わるっていうのは、ブラウザを使っているクライアント側の話ですよ。上田さんのサーバマシン上でノートンを外しても意味無いと思います。
上田さん
前回の投稿の通り、リファラ値は改竄できてしまいます。
つまり、嘘の値を返すことができるのでアクセス制限のチェックとして使うのは無意味に近いです。
別の方法としては、パスワードで認証をした時にセッションID発行してそれをチェックするようにすればいいと思います。(Cookieでも使って)
中田さん、Iwaさんありがとうございます。
実は、Basic認証が使えない状態での、アクセス制限の場所を作っています。
CGIでのパスワードアクセスしたあとでる、メニューページからいろいろリンクできるようになっているのです。しかし、ページ(urlには***.cgiと出ている)がリンクを張られると何の問題もなく表示されてしまいます。そこで環境変数HTTP_REFERER が、お気に入りや、直接urlを入力したとき、NULLになるのを利用して、メニューページからしかcgiでhtmlを出力しないようにする方法を考えました。
素人考えなのでもっといい方法があれば教えていただきたいのですが・・・。
その制作をしているANHTTPDが動いているPCが、HTTP_REFERER を返さないので困っています。
Iwaさんのご指摘通りノートンを終了してみたのですが、やはり表示されません。
起動時からはずしておく必要があるのでしょうか。それとも他に原因があるのか???
ノートンのデフォルトでは、そうなっているという中田さんのご指摘ですが、その設定を
変更することは可能なのでしょうか・・・・。
サーバの話からどんどんずれて行って恐縮なのですが、ご存じならご指導お願いします。
上田さん、
Iwaさんの話の通りですが、補足します。
まず、環境変数 HTTP_REFERER というのは、ブラウザが出すHTTPリクエストヘッダの中の Referer ヘッダの内容がセットされます。
たとえば、http://www.st.rim.or.jp/~nakata/ と手で入力してアクセスすると、ブラウザは、
GET /~nakata/ HTTP/1.1
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.st.rim.or.jp
...
というようなリクエストを出します。
そのページでゲストブック/コメント集のリンクをクリックすると、
GET /~nakata/gbook/gbook.htm HTTP/1.1
Accept: */*
Referer: http://www.st.rim.or.jp/~nakata/
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.st.rim.or.jp
...
という具合に Refererヘッダがつきます。(この場合は3行目です。)
つまり http://www.st.rim.or.jp/~nakata/ のページをリファラとして gbook.htm にアクセスします。
これを、直接ブラウザでアドレスを http://www.st.rim.or.jp/~nakata/gbook/gbook.htm と指定した場合は、リクエストに Refererヘッダはつきません。
結局のところ、大抵のブラウザは Referer をつけますが、そういうブラウザでもRefererページがなければ Refererヘッダはつけられません。 その場合はもちろん CGIで HTTP_REFERER はセットされません。 リクエストにRefererヘッダがないのですから。
CGIのテストで HTTP_REFERER を使いたいのなら、HTMLページを作ってその中で CGIへのリンクを作り、そのリンクをクリックするようにすればよいと思います。
なお、Iwa さんが言うとおり ノートンのインターネットセキュリティのデフォルト設定では「プライバシー保護」ということで、Refererヘッダに手を加えます。
上田さん
> ブラウザのどの部分を変更すればとれるように(変数を設定するように)なるのでしょうか。
ブラウザ側の仕様によるものなので「リファラを返す・返さない」という設定はできません。
また、リファラ値は改竄可能なので過信はできません。
それに、セキュリティ関連のソフト側でリファラ値を隠蔽するものもあるので・・・。
少し教えてください。
直接an httpdに関わることでは無いのですがCGIのテストができなくて困っています。
症状は、環境変数$HTTP_REFERERが帰ってこないのです?
過去ログ検索で、以下のような文を見つけたのですが
−−−−−
akane wapiwapi@anet.ne.jp 2002/02/02 10:49
$HTTP_REFERER
ブラウザから現在のページを参照する際のページアドレス。 この変数は、ユーザのブラウザにより設定されます。全てのブラウザが この変数を設定するわけではありません
−−−−−
同じIEでもenvでとれる機とそうでないものがでます。
初心者で申し訳ありませんが、ブラウザのどの部分を変更すればとれるように(変数を設定するように)なるのでしょうか。
教えていただけないでしょうか。よろしくお願いします。