2016-06-19 9 views
1

私はwww.domain.comsubdomain.domain.comの両方に静的資産(主にフォント)を提供するPhoenixアプリケーションを持っています。PhoenixでフォントのCORSヘッダーを設定するには?

アプリは主人公でホストされています。

CORSヘッダーを設定するにはどうすればよいですか?

私はthis libraryを見つけましたが、静的資産では動作しません(私は思っています)。

私はこのようにそれを設定してみました:

defmodule MyApp.CORS do 
    use Corsica.Router 

    resource "/fonts/*", origins: ["http://subdomain.domain.com"] 
end 

が、結果のヘッダーは、次のとおりです。

cache-control:public 
content-length:839 
content-type:image/svg+xml 
date:Sun, 19 Jun 2016 09:40:01 GMT 
etag:3AAE04D 
server:Cowboy 

答えて

5

あなたはPlug.Staticに、オプションの:headersオプションを使用して*Access-Control-Allow-Originヘッダーを設定することができます。 lib/my_app/endpoint.ex

plug Plug.Staticコールの最後に次の引数を追加します。

headers: %{"Access-Control-Allow-Origin" => "*"} 

あなたのコードのようなものになります。これはない仕事はあなたIFなること

plug Plug.Static, 
    at: "/", from: :my_app, gzip: false, 
    only: ~w(css fonts images js favicon.ico robots.txt), 
    headers: %{"Access-Control-Allow-Origin" => "*"} 

注意を私はyou have to dynamically calculate the value based on the request's Origin headerを信じているので、1つのドメイン(1つのドメインまたは*が動作する)が動作するように複数のドメインを許可したいのに対し、Plug.Staticのみヘッダーの静的なリストを追加します。

+0

env varで設定することはできますか? config/prodのように、System.get_env( "CORS_ORIGIN")や "$ {CORS_ORIGIN}"(リリース版の場合)やlibフォルダのコンパイル時間のためにできないのですか?ところであなたのソリューションに感謝します! –

関連する問題