0

SOに関する多くの関連する質問とそれに関する多くの記事があるかもしれませんが、その理由を理解できません。

私が達成しようとしているのは、アフィリエイトのようなものがあるということです。その中で、ユーザーがGoogleまたはその他の場所で当社の広告をクリックした場合. 彼は適切なページにリダイレクトするページに移動します。リダイレクトには、次のコードを使用します。

header("HTTP/1.1 301 Moved Permanently");  
header("Location: http://www.example.com/page2.php");

このコードが に書き込まれpage1.php、ユーザーが にリダイレクトされたとしますpage2.php。ユーザーが到着したpage1場所からリファラーを取得します(たとえば、google.com)。しかし、page2.php私たちはリファラーを取得しませんpage1。これは私には奇妙な振る舞いのように思えます。誰でもこの動作の理由を明らかにできますか。

PS: リダイレクトの直前に Cookie を追加して の値を取得することで、これを回避できますpage2

ありがとう

4

2 に答える 2

0

私が間違っていなければ、リファラーはブラウザーによって送信されます (許可されている場合、すべてのブラウザーが送信するわけではなく、クライアントが簡単に変更できます)。クライアントではなく、サーバーがリダイレクトを行います。私の知る限り、それを「偽造」する方法はありませんが、bansi によって提案された手法は魅力的に見えますが、実際には機能しないことを示す Web 上の複数の投稿を見てきました。

于 2013-07-31T13:40:53.833 に答える
-2

重要: @cryptic と @Bartdude が指摘したように、次の解決策は魅力的ですが、うまくいきません。これが機能しない理由を以下に説明します。

--- 元の解決方法 ---ヘッダーも
追加Referer

header("Referer: http://www.the_referer_page");

Refererブラウザからサーバーに送信されます。別のサイトにリダイレクトしているため、ブラウザーが関与していないため、ヘッダーを手動で他のサイトに送信する必要があります。

--- オリジナルソリューション終了 ---

上記の解決策が機能しない理由

HTTP refererブラウザからサーバーに送信されます。ヘッダーがブラウザーに送信されると、301 Moved Permanentlyサーバーはブラウザーに、このページが移動され、新しい場所からページが読み込まれることを伝えます。次に、新しい場所からページを要求するか要求しないか、および新しいサーバーに送信するすべてのヘッダーをブラウザーが決定します。実際にブラウザにヘッダーを送信しても、実際にHTTP refererは意味がありません。

間違った解決策を提供して申し訳ありません。Refererこれが、私を誘惑したようにヘッダーを使用する誰かの誘惑を回避することを願っています.

于 2013-07-31T13:38:24.510 に答える