2016-06-19 5 views
1

나는 Phoenix 앱을 가지고 있는데, 정적 애셋 (주로 폰트)을 www.domain.comsubdomain.domain.com에 모두 제공해야합니다.Phoenix에서 글꼴의 CORS 헤더를 설정하는 방법은 무엇입니까?

앱이 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 

답변

5

당신은 Plug.Static에 옵션 :headers 옵션을 사용 *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" => "*"} 

주를 당신의 경우이 것 하지 일 하나의 도메인 (하나의 도메인 또는 *이 작동 할 것입니다)이 작동하도록 1 개 이상의 도메인을 허용하려면 Plug.Static만이 allo 인 동안 you have to dynamically calculate the value based on the request's Origin header을 믿습니다. 헤더의 정적 목록을 추가합니다.

+0

env var로 설정할 수 있습니까? config/prod와 같이 System.get_env ("CORS_ORIGIN") 또는 "$ {CORS_ORIGIN}"(출시 된 버전의 경우) 또는 lib 폴더의 컴파일 시간 때문에? 그런데 그 해결책에 감사드립니다! –

관련 문제