2011-07-05 1 views
0

私のsearch-fuは不足しているかもしれませんが、XHR/AJAXリクエストを使ってJSONやXMLファイルなどの静的資産を取得することについての情報は見つかりません。私はそれがおそらくWebサーバーに依存していると思うが、Apache httpdと仮定しよう。これは可能ですか?なぜそうでないのであれば?AJAXリクエストを介して静的資産を取得することは可能ですか?

+0

XHRは*あらゆる*種類のHTTPリクエストを処理できます。 – katspaugh

+0

URLを介して取得できる限り、問題ありません。 Ajaxリクエストは特別なものではありません。結局、それは通常のHTTP要求です。 –

答えて

1

はい。 XHRは、HTTPリクエストをサーバーに送信する手段に過ぎません。サーバーは通常の方法で応答しますが、特別なサーバー構成は必要ありません。

ブラウザは、XHRにいくつかの制限を課しています。具体的には、デフォルトでは、XHRを使用して、オリジンを持つリソースに、XHRを実行しているスクリプトがロードされているドキュメントのみを要求することができます。これはSame Origin Policyと呼ばれます。だから私のスクリプトがhttp://example.comの文書によって読み込まれた場合、XHRを使ってhttp://foo.com/index.htmlを要求することはできません。

Cross-Origin Resource Sharingと呼ばれる新しい(ish)標準があり、ブラウザとサーバーが連携してそのポリシーの例外を作成できます。現代のブラウザではCORSがサポートされていますが、残念ながらIEではXDomainRequestオブジェクト(およびIE8以降のみ)を介してのみサポートされていますが、通常のXMLHttpRequestオブジェクトではサポートされていません。 (FirefoxとChromeはXMLHttpRequestでそれをサポートし、うまくいけば、いつかマイクロソフトは、同様に光が表示されます。)

+0

しかし、HTTPヘッダは、それが、これは、彼らが特別な方法で処理された意味している場合だけ疑問に思ったXHRリクエスト、です指定します。答えをありがとう。 –

+0

@リチャード:あなたのサーバーがそれらを特別に扱うように設定されていない限りはありません。私は決してデフォルト設定を見たことがありません。もちろん、何もないわけではありません。 :-) –

+0

大丈夫です。私はダイナミックなWebアプリケーションでAJAXを使用したことがありますが、静的資産では大幅に単純化される状況があります。 –

0

静的リソースは、HTTPの世界では異なるものではありません。 AJAX呼び出しを行うときは、内線番号(pngやpdfなど)のURLを使用します。 Webサーバーは、どのように要求を行ったのかにかかわらず、その拡張子を認識し、それを提供します(もちろん、それを妨害しない場合)。 jQuery ajaxを使用しているとしましょう。応答は、成功コールバックのパラメータとして利用できます。

$.ajax({ 
    // parameters here 
    success: function (response) { 
     // Here you have access to response. 
    } 
}); 
関連する問題