5

最近、アセットをCDNCloudfrontに移動しました。Firefoxで表面が壊れていることに気づきました。数分の検索の後、それはCORSの話でした。フィールドCloudfrontを許可しました。

application_controller

after_filter :set_access_control_headers

def set_access_control_headers
  headers['Access-Control-Allow-Origin'] = CDN_CLOUDFRONT
end

production.rb

CDN_CLOUDFRONT = "http://xxx.cloudfront.net"

これは昨日まで非常にうまくいきました。何度か検索して振り返った後、私は解決策を見つけられませんでした。

何か案が?

4

3 に答える 3

7

私はHerokuのセットアップを使用していませんが、AFAIK(およびdeveloper.mozilla.orgに示されているように)のヘッダーは、CDNから静的アセットを消費するAccess-Control-Allow-Originドメインの値を反映している必要があります。

例:http://mydomain.netでホストされ、http://wefe342r34r23.cloudfront.netからアセットを消費するウェブサイトの場合

headers['Access-Control-Allow-Origin'] = 'http://mydomain.net'

mydomain.netがhttp://wefe342r34r23.cloudfront.net経由でアセットにアクセスできるようにします。言い換えれば、CDN_CLOUDFRONTあなたのウェブサイトのドメイン名で置き換えることは問題を解決するはずです。

お役に立てれば。

PS:昨日まで、セットアップがどのように機能したかわかりません。:)

PPS: CDNに代替ドメイン名(CNAME)を追加すると、http://xxx.cloudfront.netで公開されている既存のディストリビューションをすばやく破棄し、新しいディストリビューションhttp://yyyの使用を開始するシナリオで役立ちます。 cloudfront.netその場合、 http://cdn.mydomain.netなどの代替ドメイン名を使用している場合は、アプリケーションコードベースで何も変更する必要はありません。

于 2013-03-15T06:18:11.830 に答える
0

これは、同じトピックに関連する別のStack Exchangeページに投稿したもののコピーです。他の誰かが同じ問題を抱えていても正しい答えが見つからなかった場合に備えて、これを残しておきます。

HerokuのRails3アプリでも同じ問題が発生しました。フォント-SumoCDNを介してアセットを実行していたため、素晴らしいアイコンが表示されませんでした。

これに関連するいくつかの応答があります。そのうちの1つは、アプリケーションコントローラーにafter_filterを配置して、ヘッダー値を(freemanoidによって)設定することですが、それは私には機能せず、PeterMarklundによって提案されたカスタムミドルウェアを使用する必要がありました。 。

両方のソリューションは、Rails 3.1バージョンの下にここに掲載されています:Railsの下の webrickでaccess-control-allow-originを設定するにはどうすればよいですか?

于 2014-01-21T02:14:12.030 に答える
0

私が使用した回避策-フォントをS3に個別にアップロードし、バケットにcors構成を設定します。フォントリンクをS3フォントにハードコーディングします。すべてのアセット(フォントを除く)はクラウドフロントから取得されます-フォントはS3から取得されます。その醜い-しかし、それは動作します...。

于 2014-06-25T10:09:46.013 に答える