2

jquery ajax経由で画像を取得するために、このようなものを使用しています。

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

リクエストヘッダーに含まれていることがわかります

Access-Control-Request-Headers:origin、content-type、accept

一方、次のようなimg要素を設定すると

<img src="imageurl" ...

「アクセス制御要求ヘッダー」が表示されない要求ヘッダーを観察します。

$.ajax() がこのヘッダーを追加する理由は何なのか疑問に思っています。有効なクロスサイト HTTP 要求である必要がある画像にこれを追加するのはなぜですか。このヘッダーを削除することは良い習慣ですか、それとも可能ですか?

4

1 に答える 1

1

XMLHttpRequest を使用してアクセスされるものはすべて、画像であるかどうかにかかわらず、これらのヘッダーを持ちます。重要な部分は、リクエストの発信元 (「img」タグではなくスクリプト) です。

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

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

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

于 2012-04-25T23:07:55.973 に答える