0

私はウェブページを持っています... APIのようなものです...基本的に、jsonの形式でいくつかのデータを出力します。

他のウェブサイトは、単に使用するだけでphp経由でこのデータを使用できますfile_get_contents

また

javascript/jquery ajax request(jsonp)

とにかく、不要な Web サイトをブラックリストに登録できるようにしたいので、この要求がどこから来ているのかを知る必要があります。

私はもう試した

 $url     = $_SERVER['HTTP_REFERER']; 
 $domain  = parse_url($url, PHP_URL_HOST);

しかし、私は得る

Undefined index: HTTP_REFERER

したがって、私が間違っていて、これが奇妙な例外でない限り、HTTP_REFERERここでは機能しません。

file_get_contentsページリクエストの場合、どうすればレフリーを取得できますか?

4

5 に答える 5

1

通常、Ajax リクエストはクライアントのブラウザーを介して送信されますが、通常、サーバーは、file_get_contents()または同様のツールを呼び出して、ページを取得します。

したがって、サーバーの場合、REMOTE_ADDR HTTP ヘッダー(発信者の IP を含む) をブラックリストと照合してチェックできます。

Ajax リクエストの場合、おそらくユーザー エージェントからのもので、どの Web サイトから発信されたものかはわかりません。

確かではありませんが、HTTP_REFERERヘッダーには正確にそれが含まれている可能性がありますが、確認していません。

更新(Ajax 要求) :
少し調べたところ、ブラウザーは XHR 要求でリファラー データを送信しないことが判明したため、アクセスしたくないサーバーの IP のみをブラックリストに登録できます。

于 2013-09-30T19:15:28.917 に答える
0

サーバーが直接要求する場合は、$_SERVER 'REMOTE_ADDR' および 'REMOTE_HOST' を使用できます。

JavaScript を使用している場合は、クライアントの IP のみを取得します。jquery リクエストを禁止するには、 strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') を使用できます。

于 2013-09-30T19:09:26.910 に答える
0

あなたが探しているのは ではありませんか$_SERVER['REMOTE_ADDR']? AJAX 呼び出しにはおそらく Referer ヘッダーがないため、そのエラーが発生しています。

于 2013-09-30T19:09:58.100 に答える