https://XXX.XXXXX.co.jp/test.html から
https://XXX.XXXXX.co.jp/XXX/test.php
にアクセスした時、
Chromeや、Edgeの場合は、
PHP側で、$_SERVER["HTTP_REFERER"] が取得できますが、
Firefoxの場合は、取得できません。
Firefox(Windows)のバージョンは、現時点での最新 97.0.1 です。
(リファラーポリシー:strict-origin-when-cross-origin(規定値))
SSLは有効になっており、上記URLの画面遷移なら、同一オリジンとなるハズですので、
リファラーポリシーが「strict-origin-when-cross-origin」でも、
$_SERVER["HTTP_REFERER"] が取得できるハズだと思うのですが。
(実際、Chrome では取得できますし…。)
PHP側で、$_SERVER の以下の値を確認すると、
以下のようになっていました。(特に問題がある様には見えない)
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Firefoxでのみ、$_SERVER["HTTP_REFERER"] が取得できないのは、
何が原因と考えられますでしょうか?
開発環境は、以下の通りです。
CentOS 7
Apache 2.4.34
PHP 7.4.25
アクセスに使用したブラウザは、すべてWindows10環境のもの
よろしくお願い申し上げます。
CHERRY さんからの修正依頼に対する回答
https://www.iphiroba.jp/env.php 等のWebサイトで、HTTP_REFERER を表示しても同じでしょうか。
表示されないのはご自身のWebサイトだけでしょうか。
お問合せありがとうございます。
さっそく、IP広場 環境変数チェックページをブラウザで表示させ、確認してみました。
「直前のURL(どこからきたか?)HTTP_REFERER」を確認してみました。
Chromeでは、URLが表示されますが、
Firefoxでは、「-」と表示されておりました。
Y.H. さんからの修正依頼に対する回答
Addonなどインストール済みの場合は全て無効にして検証されてますか?
はい、全て無効にして検証しています。
arcxor さんからの質問に対する回答
ちなみにこれはどうやって Firefox のリファラポリシーを確認したのでしょうか。
Firefoxの公式ブログが以下の様に書いていました。
「Firefox 87以降、デフォルトのリファラーポリシーを「strict-origin-when-cross-origin」に設定」と紹介しています。
また、Firefox開発者ツール > ネットワークタブ でも、
「strict-origin-when-cross-origin」になっている事を確認していました。
解決しました。
arcxor さんからいただいた回答の通り、about:config で referer と検索して出てくる項目のうち、
network.http.sendRefererHeader が 0 になっていました。
規定値の2に戻したところ、無事、リファラーが送信されるようになりました。
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー