2012-04-25 17 views
2

jquery ajaxで画像を取得するために、このようなものを使用しています。私が設定されている場合、一方

を受け入れ、起源、コンテンツタイプ:

$.ajax({ 
    url: imageurl, 
    type:'GET', 
    contentType: 'image/png', 
    success: success, 
    error: error, 
    timeout: 5000 
}); 

私は私のリクエストヘッダが

アクセス制御リクエスト・ヘッダーを含んでいることがわかります

<img src="imageurl" ... 

のようなimg要素をアップし、「アクセス制御R 「ヘッダーに平等」。

$ .ajax()がこのヘッダーを追加する理由はなんですか?有効なクロスサイトHTTP要求である必要がある画像にこれを追加するのはなぜですか。このヘッダーを削除することも可能ですか?

+1

ajaxリクエストを設定するのではなく、srcを使用してイメージをロードするだけです。あなたはあなたが持っている成功関数を処理するonloadイベントを添付することができます。何かこれに似て:http://stackoverflow.com/questions/4285042/can-jquery-ajax-load-image – scrappedcola

+0

@scrappedcolaありがとうが、私はload()を使用することができませんのでタイムアウトが必要 – zero7

答えて

1

XMLHttpRequestを使用してアクセスされるものは、イメージであろうとなかろうと、これらのヘッダーを持ちます。重要な部分はリクエストの起源です( 'img'タグではなくスクリプトです)。

このヘッダーは実際にはブラウザによって作成されるため、いいえ、jqueryで削除することはできません。

これまで、スクリプトはクロスサイトHTTPリクエストを実行できませんでした。これらのヘッダーは、新しい「クロスオリジン共有」機能の一部です。参照:https://developer.mozilla.org/en/http_access_control

jqueryを使用して回避することが可能であることに注意してください。「img」タグを生成する可能性があります。試してみませんでしたが、試してみる価値があります。

+1

私はちょうどしたいです画像タグを作成することで、ChromeとFirefoxの両方でOriginヘッドを正しく送信できるようになりました。画像タグを生成するというあなたのアイデアを歓迎します。 – dougBTV

関連する問題