4

誰かが画像を要求したときにRails3のHEADERを変更することは可能ですか?例えば:

http://localhost:3000/assets/myimg.png

ヘッダーにAccess-Control-Allow-Origin: "*"を追加して、JavaScriptを介してリモートで画像ファイルをダウンロードできるようにします。

更新1

ヘッダーを変更するためのアセットフォルダーの下の画像に対する答えがありますが、パブリック画像に対しても同じことを行う必要があります。以下と同じ方法を試しましたが、うまくいきませんでした。

URLの例は次のようになります

http://localhost:3000/images/stuff.png

Rack MiddleWareを試しましたが、パブリックイメージに移動するとcallメソッドが実行されません。また、LocationMatch(実稼働環境で)も試しましたが、運が悪かったのです。

公開画像を終了してヘッダーを変更するにはどうすればよいですか?

更新2

そのため、LocationMatchを介して機能させることができましたが、画像をキャッシュできません。apacheを介して画像キャッシュを無効にする方法はありますか?

4

1 に答える 1

5

アセットは「コンパイル」され、Webサーバー(Nginx / Apache)によって直接提供されるため、Railsは本番環境では提供しません。ヘッダーを追加するには、Webサーバーの構成を変更する必要があります。

Apacheではこのようなものです。

<LocationMatch "^/assets/.*$">
  Header add Access-Control-Allow-Origin "*"
  ...
</LocationMatch>

そしてこれはNginxで。

location ~ ^/assets/ {
  add_header Access-Control-Allow-Origin *;
  ...
}

アセットのプリコンパイルの詳細については、このガイドを参照してください。

更新:開発環境でヘッダーを適用する必要がある場合は、カスタムラックミドルウェアを使用して適用できます。例については、この要点を参照してください。

于 2012-11-27T17:48:02.283 に答える