通常のブラウザのGUIリクエストとAJAXリクエストを区別するには、PHPスクリプト内の最良の方法は何ですか?ブラウザのGUIリクエストとAJAXリクエストを区別する
答えて
そうではありません。
あなたは、あなたが使用できるリクエストヘッダーに何らかの種類の識別子を残すようにJavaScriptを書くことができます。 XHR setRequestHeader
メソッドを参照してください。
HTTPの便利な使い方は、Accept
ヘッダーを変更して、通常のコンテンツネゴシエーションを行うことです。次に、Ajaxであるかどうかを気にする代わりに(例えば)、JSON応答よりもHTML応答が優先されるかどうかを気にします。
もう1つの規則は、XMLHttpRequest
の値を持つ標準外のX-Requested-With
ヘッダーを使用することです。多くのJavaScriptライブラリは、XHRを使用して任意のリクエストにデフォルトでこれを追加します。
いずれの手法も、XMLHttpRequestまたはプラグインベースのAjaxでしか動作しません。 JSON-PまたはiframeベースのAjaxに任意のHTTPヘッダーを設定することはできません。
サーバーに関する限り、通常のリクエストとJavascriptによって開始されたリクエストとの間に特別な違いはありません。
特定のブランドのブランドを特定する場合は、カスタムヘッダーを渡すのが妥当な方法です。
$.ajax(uri, {
beforeSend: function(xhr) {
xhr.setRequestHeader('X-YourApp-AJAX', '1');
});
Apacheを使用している場合、PHPで設定したヘッダーを確認するだけで十分です。
$headers = getallheaders();
if(isset($headers['X-YourApp-AJAX'])) {
// AJAX request
} else {
// ...
}
編集
jQueryのように見える、とりわけ、既にAJAXリクエストにX-Requested-With
ヘッダを渡す - 優先してそれを使用します。
これはかなり良い解決策のようです。 xhr.setRequestHeader( 'X-YourApp-AJAX'、 '1')も同様です。すべてのブラウザで動作しますか? – Mark
基本的な '' XMLHttpRequest''オブジェクトは、最新のすべてのブラウザに実装されています。 IE6はそれを[その名前で]サポートしていません(http://msdn.microsoft.com/en-us/library/ms537505(v = vs.85).aspx)。しかし、あなたのJavascriptフレームワークはあなたを救うでしょう存在しない場合は手動で定義する必要があります。 – cantlin
- 1. JSFカスタムバリデーターで完全なリクエストからajaxリクエストを区別する
- 2. Ajaxリクエストと通常のHttpリクエストとを区別する方法は?
- 3. ブラウザでナビゲートするときのajaxリクエスト
- 4. settings.urlを使用してajaxリクエストを区別する
- 5. RenderActionのリクエストとAJAXのリクエストを区別するにはどうすればよいですか?
- 6. PHPのcURL POSTリクエストと通常のPOSTリクエストの区別
- 7. 内部アクションとajaxリクエストのリンクを区別する最も良い方法は?
- 8. 別のリクエストのデータに依存するAjaxリクエスト
- 9. ajaxリクエストを識別する方法は?
- 10. WatirとAjaxリクエスト
- 11. Phonegapとajaxリクエスト
- 12. CURLリクエストをAJAXリクエストに変換する
- 13. 別のAJAXリクエストでSelect2プラグインのAJAXレスポンスをフィルタリングする
- 14. ブラウザのURLとHTTPリクエスト
- 15. AJAXリクエストと返信
- 16. Ajaxリクエストとtext/xml
- 17. Ajaxリクエストと属性
- 18. Code Igniter ajaxリクエストURLをブラウザのURLに表示する方法。
- 19. Ajaxリクエスト
- 20. Ajaxリクエスト
- 21. AJAXリクエスト
- 22. Ajaxリクエスト
- 23. Rails - AJAXリクエストと非AJAXリクエストのために同じフォームを使用する
- 24. NSURLConnectionは2つの異なるリクエストを区別する
- 25. RxJava + Retrofit:複数のリクエストコールAPIの各リクエストを区別する
- 26. RestKit:didLoadResponseで複数のリクエストを区別する:
- 27. Jersey Request Filterで複数のリクエストを区別する
- 28. ブックマークレットのAjaxリクエスト
- 29. のJavaScript Ajaxリクエスト
- 30. AjaxのPOSTリクエスト
http://stackoverflow.com/a/2579271/1256609 –