2011-01-23 9 views
7

リクエスト元を知りたいときは、CURL(PHP)とAJAX(Javascript)の違いを知る必要があります。AJAXとCURL

更新日:私はソースとしてパケットをサーバ側で受信される内容の送信者IPアドレスAJAXを使用して要求を生成していた場合にどのような私が知りたいことはあり ?同じことがCURLであり、すべてのユーザーに対して、単一のIPアドレスが送信されます。しかし、JSと同じケースですか? JSはクライアント側で実行されるので、クライアントのIPアドレスになりますか?

+0

http://stackoverflow.com/questions/4738380/what-differences-are-there-between-form-submissions-and-curl-requestsの複製でもよい – arnaud576875

+0

いいえ、そうではありません。私はそれがCURLまたはAJAXのときに要求元を知る必要があります – Neutralizer

答えて

14

cURLはサーバー側のプロセスです。つまり、ページがレンダリングされる前に呼び出され、クライアントの機能とは何の関係もありません。

ただし、AJAXはクライアント側の呼び出しです。これは実行されないことを意味しますまでクライアントがページをロードします(または少なくともそのコードが表示され実行されますが、これは通常document.readyにあります)。

情報を取得してすぐにユーザーにダンプしたい場合は、cURLをおすすめします。プログレッシブロード(ページをダンプし、ユーザーに「シームレス」なコンテンツを取得する)を実行する場合は、AJAXが最適です。すべての念頭に置いておくが、今日の時代には、それは半ば些細なものだが、AJAXは常にサポートされないかもしれない(またはFireFoxのNoScriptプラグインの場合は無効になる)かもしれない。

つまり、cURL実行のソースはサーバー上にあります。 AJAXリクエストのソースは、クライアントごとに行われます。いずれも誰が何を送信したのか(ヘッダーが変更される可能性がある)を知るための安全な検出手段(サーバー側)を提供しません。

0

リクエストのソースとしてどのメソッドが使用されたかを検出しようとしている場合は、確実に知る方法がありません。ほとんどのブラウザは、AJAX経由でリクエストを送信するときに、X-Requested-WithというHTTPヘッダーを使用します。 cURLライブラリはデフォルトでユーザエージェントを送信しますが、これは明らかにライブラリによって変更される可能性があります。どちらの方法も簡単に偽造でき、厳格な検証には使用しないでください。

編集:

AJAX要求がAJAX要求を行ったクライアントから来ます。 cURLリクエストは、ライブラリが使用された場所から取得されます。 (PHPを使用している場合は、PHPサーバーから来るでしょう。CLI経由で使用している場合は、コマンドを実行したサーバーから来ます)

明らかに要求はプロキシの背後にある可能性があります

0

サーバーからjavascriptファイルを要求したIPアドレスは、そのファイルからサーバーにajax要求を送信したIPアドレスと同じになります。 same origin policyを参照してください。

+0

それによると、www.nnn.comと言うAJAXリクエストを発するWebページを作成すると、自分のWebページを使用しているユーザーは誰でも自分のIP 。右? – Neutralizer

+1

はい、これはBradと私が言ったことです。注:AJAXは、同じ発信元ポリシーによって制限されています。要求の発信元とは異なるドメインにAJAX要求を行うことはできません。 – William