IT Rescue IT関連Tips情報

AJAXによるアクセスを判定(判別・区別)する

2006年10月24日javascript

AJAXのXMLHttpRequestオブジェクトからの要求(HTTPリクエスト)なのか,通常のWebブラウザによる要求なのかをサーバサイドで判定(判別・区別)する方法.
AJAXからのリクエストと通常のWebブラウザからのリクエストで出力する内容を変えたい場合があります.そんなときどうやって,両者の区別を判定するのか.

Firefoxのlivehttpheader機能拡張を使って,Webサーバとブラウザ間のヘッダのやり取りを眺めました.すると,AJAXによるアクセスの場合は

  X-Requested-With : XMLHttpRequest

というヘッダが付いていました.

このヘッダの有る/無しをサーバ側で判断すれば,両者の区別を判定できそうです.上記ヘッダは,サーバ側では HTTP_X_REQUESTED_WITH という環境変数として参照できました.

ZopeのDTML Method 場合には以下のように記述しました.

<dtml-let reqwith="REQUEST.environ.get('HTTP_X_REQUESTED_WITH')">
<dtml-if "reqwith != 'XMLHttpRequest'">
通常のWebブラウザに返すHTML...
<dtml-else>
AJAXに返すHTML..
</dtml-if>

2006/10/27追記:補足があります.


コメントをどうぞ

免責事項

著作権者の文書による承諾を得ずに、本サイトの内容の一部、全部を無断で複写、複製、転載することは、禁じられています。
また、当ウェブサイト に記載された情報の完全性・正確性に対して一切の保証を与えるものではありません。当ウェブサイトに含まれる情報もしくは内容を利用することで直接・間接的に生じた損失に関し一切責任を負わないものとします。