xmlhttprequest概要

当初、マイクロソフトのインターネットを許可するよう設計さxmlhttprequest explorer ( ie )のjavascriptからxmlドキュメントをロードします。 xmlのにもかかわらず、その名前が、実際には汎用xmlhttprequest httpクライアントのためのjavascriptです。 しており、 javascriptを投稿できるようになるとhttpリクエストします。 (リクエストの投稿、データがサーバに送信された形式で、お客様の選択します。 )メインの制限をxmlhttprequestブラウザのセキュリティサンドボックスが予定されています。 それだけでできるようにするhttp (秒)のリクエスト(ファイルのurl 、例えば、動作しません)とのリクエストのみを行うことができ、同じドメインでは、現在のページにロードされます。

  

セキュリティの制限がないxmlhttprequestを制限する方法で使用することができて、しかし、トレードオフの価値があること、セキュリティが追加されます。 ほとんどのアプリケーションでのjavascript攻撃の中心付近に、ウェブページへの悪意のあるコードを注入します。 xmlhttprequest許された場合のリクエストを任意のウェブサイトには、主要なプレーヤーになるだろうと、これらの攻撃します。 サンドボックスのセキュリティこれらの潜在的な問題を軽減します。 また、プログラミングモデルを簡略化しているため、暗黙のうちに信頼することができjavascriptのコードのすべてのデータをロードしてからxmlhttprequestます。 ことができ信頼しているため、新たなデータを確保するのと同じようにデータが読み込まれ、最初のページのページを開きます。

xmlhttprequestのみを提供するという事実にもかかわらず、小さなapiやほんの一握りのメソッドやプロパティ、それには、ブラウザの違います。 これらの違いは、主にイベント処理やオブジェクトのインスタンス(すなわち、 xmlhttprequest activexオブジェクトは、実際には)ので、この問題を回避するハードではありませんします。 xmlhttprequestの概要については、次のapiで、 mozillaの構文をxmlhttprequestのインスタンスが使用されます。 実行したい場合の例を示しすなわち、新たに置き換える必要がありxmlhttprequest ( ) ;どちらかの新しいactivexobject ( " msxml2.xmlhttp.3.0 " ) ;または完全なインスタンスメソッドのクロスブラウザに表示され"クロスブラウザxmlhttprequest "セクションにこの記事します。

xmlhttprequestは、最もよく使われてajaxの通信方法を提供するので、 2つのユニークな機能があります。 最初の能力をロードする機能を提供して新しいコンテンツを変更せずにそのようなコンテンツがどのような方法で、これによりajaxのことで非常に簡単にフィットするように開発され、通常のパターンだ。 2つ目の機能を使って同期を行うjavascriptを呼び出します。 同期コールを停止するまで、それは他のすべての操作を完了し、この中には、通常ではありませんオプションを使用する場合は、することができ有用である場合に現在のリクエストを完了する前にしなければならないのさらなるアクションが取られました。

xmlhttprequest : :オープン( )

openメソッドを使用して設定して、リクエストの種類(取得、投稿、置く、またはpropfind )は、要求されたページのurl 、および非同期されるかどうかを呼び出します。 ユーザー名とパスワードをhttp認証オプションを通過することもできます。 urlの相対パスのいずれかをすることができ( page.htmlでのような)または完全に1つのサーバーのアドレスが含まれて( http://blog.joshuaeichorn.com/page.htmlなど)します。 署名は、基本的な方法:

オープンします(タイプ、 urlを、 isasync 、ユーザー名、パスワードを入力)

は、 javascriptの環境では、セキュリティ上の制限が所定の位置にします。 これらのセキュリティ上の制限を引き起こす方法を開いている場合は例外を投げurlは、別のドメインからよりも、現在のページを開きます。 次の例はオープンを設定するには同期のリクエストを取得するindex.html :

var 1 = reqの新しいxmlhttprequest ( ) ;
2 req.open ( '取得' 、 ' index.html 'は、 false ) ;
3 req.send ( nullを) ;
もし4 ( req.status == 200 )
5警告( req.responsetext ) ;

xmlhttprequest : :送信( )

送信方法を指定されたurlの接続を開いています。 リクエストを非同期に送る場合は、電話をかけるとすぐにそれを返す;そうしないと、電話をかけるとブロックが実行されるまでのさらなるページがダウンロードされます。 リクエストタイプを投稿している場合は、ペイロードが送信され、リクエストのボディではサーバに送信されます。 メソッドのシグネチャは:

送信(ペイロード)

リクエストを投稿する際には、必要があるでしょうcontent - typeヘッダーを設定します。 この方法では、何をすべきかを知っているサーバーのコンテンツをアップロードします。 フォームを送信することを模倣httpを使用後、あなたのコンテンツタイプを設定するにapplication / x - www - urlエンコード形式です。 urlエンコードします。同じ形式のデータが表示された後のurl "ですか"します。 の例を参照することができ、このデータのエンコード形式を設定することによって、そのメソッドを取得します。 同期の例を次に示しindex.php postリクエストを送信することは、 urlエンペイロードします。 index.phpが含まれた場合< ? phpのするvar_dump ( $ _post ) ; ? >は、投稿されたデータを参照して翻訳することができ、もしそれが正常な形で、警告:

var 1 = reqの新しいxmlhttprequest ( ) ;
2 req.open ( '投稿' 、 ' index.php 'は、 false ) ;
3 req.setrequestheader ( 'コンテンツタイプ' 、
4 'にapplication / x - www - urlエンコード形式;のcharset = utf - 8で; ' ) ;
5 req.send ( 'こんにちは世界= = xmlhttprequest &テスト' ) ;
6場合( req.status == 200 )
7警告( req.responsetext ) ;

xmlhttprequest : : setrequestheader ( )

そこには、さまざまなケースでは、リクエストのヘッダーを設定すると便利かもしれませんします。 最もよく使用setrequestheader ( )は、コンテンツタイプを設定するため、ほとんどのウェブアプリケーションは既に対処方法を知っている特定の種類など、 urlエンコードします。 setrequestheader法に署名して2つのパラメータ:ヘッダーとその値を設定する:

setrequestheader (ヘッダーで、値)

リクエストを送信するために使用して送信xmlhttprequest同じ標準ヘッダーは、 http認証を含むクッキーのヘッダーとヘッダーは、通常のブラウザのリクエストは、ヘッダーの名前は通常の名前をしたいのhttpヘッダーを上書きします。 デフォルトのヘッダを最優先に加えて、カスタム設定にも役立ちます。 setrequestheader 、アプリケーション固有のヘッダーます。 カスタムヘッダは、通常のx接頭辞の付いた標準的なものからそれらを区別します。 次の例を追加するには同期getリクエストヘッダのx fooから呼ばれてください。 test.phpが含まれた場合< ? phpのするvar_dump ( $ _server ) ; ? > 、あなたはヘッダーを提出して、警告を参照してください:

var 1 = reqの新しいxmlhttprequest ( ) ;
2 req.open ( '取得' 、 ' test.php 'は、 false ) ;
3 req.setrequestheader ( ' fooの x ' 、 'バー' ) ;
4 req.send ( nullを) ;
5
6場合( req.status == 200 )
7警告( req.responsetext ) ;

xmlhttprequest : : getresponseheader getallresponseheaders ( )および( )

getresponseheaderのメソッドを取得することができ、 1つのヘッダーからの応答;これは、特に便利必要なときには、すべてのヘッダーのようなコンテンツタイプ;注意して、指定しヘッダーは大文字と小文字を区別します。 署名の方法は次のとおりです:

getresponseheader (ヘッダ)

すべてのヘッダーを返しgetallresponseheadersからの応答を1つの文字列;これは便利なデバッグや値を探しています。 次の例では、同期のリクエストをtest.htmlを取得します。 クライアントの応答を受信する際には、コンテンツタイプは、すべてのヘッダーを通知および警告:

var 1 = reqの新しいxmlhttprequest ( ) ;
2 req.open ( '取得' 、 ' test.html 'は、 false ) ;
3 req.send ( nullを) ;
4
もし5 ( req.status == 200 ) (
6警告( req.getresponseheader ( 'コンテンツタイプ' ) ) ;
7警告( req.getallresponseheaders ( ) ) ; 8 )

他のメソッドxmlhttprequest

すべてのブラウザでアボート( )メソッドを実装し、これを使用して非同期要求をキャンセルするに進展します。 (この例は示されて"非同期のリクエストを送信する"セクションにこの記事。 ) mozillaベースのブラウザにもいくつかの追加メソッドを提供する上での基本的なapiの;たとえば、 addeventlistener ( )および( )を提供する方法をremoveeventlistenerステータスを使用せずにイベントをキャッチして*プロパティです。 もありoverridemimetype ( )メソッドのことを可能にすることを強制してコンテンツタイプをtext / xmlでパースされるようにすることが文書をdomたとえサーバーのように報告していませんします。 mozillaの特定のメソッドを特定の状況下で有用であることができますが、ほとんどの場合、必要がありませんから遠ざかっているため、すべてのブラウザでサポートしています。

xmlhttprequestプロパティ

xmlhttprequestを提供し、いくつかのプロパティを提供する情報や検索結果については、リクエストします。 ほとんどのプロパティは自明の;値とは、単に読んで行動しています。 *このプロパティは使用されているイベントハンドラを割り当てることによって、機能している。 すべてのプロパティのリストを以下のとおりです:

注意

mozillaのリセットイベントハンドラなど、 onreadystatechangeは、リクエストの処理が完了した後、これをリセットする必要があり、複数回コールしている場合は、同じオブジェクトです。

readystateのリファレンス

次の表は、使用可能な値は、 readystateの変数です。 番号を返すことになり、現在の状態を表すオブジェクトです。 各リクエストは、リストの進行状況をreadystates

readystateのレベル
readystateのステータスコード オブジェクトのステータスがxmlhttprequest
ていない( 0 ) オブジェクトが作成されていません初期化されます。 ( openメソッドが呼ばれませんでした。 )
( 1 )の読み込み オブジェクトが作成されましたが、送信されていないメソッドと呼ばれます。
( 2 )ロード 送信方法と呼ばれてきたが、ステータスとヘッダはまだ利用できませんします。
インタラクティブ( 3 ) いくつかのデータが受信されています。 responsebody responsetextのプロパティを呼び出すと、この状態に部分的な結果を得るには、エラーが返されるので、ステータスとレスポンスヘッダはありません完全にご利用いただけます。
( 4 )完了 すべてのデータが受信されており、完全なデータが利用可能で、 responsebodyとresponsetextプロパティです。


onreadystatechange readystateの変数として、イベントハンドラにリンクするような方法でreadystateの変数が変更されるたびに、 onreadystatechangeイベントハンドラが呼び出されます。

これは、記事を追加したキャロルrudenberg
免責事項:弊社のウェブサイト上に含まれる情報は、責任を負いませんこの記事されました。 この記事ではない方法での意見を反映して、ご意見、思想や信条の記事ディレクトリのスタッフします。

翻訳注意:記事" xmlhttprequest概要"を翻訳した自動翻訳サービスを使用しています。 すべてのお客様にご迷惑を翻訳してエラーが発生しました。 理解していただきありがとうございました。

Online: 560 users browsing the articles directory