如何在Phoenix中为字体设置CORS标头?

时间:2016-06-19 09:33:08

标签: heroku cors elixir phoenix-framework

我有一个凤凰应用程序,它应该为www.domain.comsubdomain.domain.com提供静态资产(主要是字体)。

该应用程序托管在heroku上。

如何设置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

1 个答案:

答案 0 :(得分:6)

您可以使用:headers的可选Plug.Static选项,并将Access-Control-Allow-Origin标题设置为*

lib/my_app/endpoint.ex中,在plug Plug.Static来电结束时添加以下参数:

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

您的代码应该类似于:

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虽然Plug.Static只允许添加标题的静态列表。