我有一个凤凰应用程序,它应该为www.domain.com
和subdomain.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
答案 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
只允许添加标题的静态列表。