這是我最終使用的,因爲我似乎無法得到良好的順序變量替換。鑑於CORS允許起源的Play框架HOCON部分,它允許本地,開發,分期和生產部署,並且沒有12因數兼容:Typesafe config HOCON - 列表的環境變量替換指導?
play {
# https://www.playframework.com/documentation/2.5.x/resources/confs/filters-helpers/reference.conf
filters {
# use default values for gzip, csrf & security headers
# setup cors
cors {
# whitelist all paths
pathPrefixes = ["/"]
allowedOrigins = [
"http://localhost:8080"
"http://app.127.0.0.1.nip.io:8080"
"http://app.192.168.64.2.nip.io"
"http://app.192.168.42.173.nip.io"
"http://app.terradatum.local"
"http://app.dev.terradatum.com"
"https://app.dev.terradatum.com"
"http://app.stage.terradatum.com"
"https://app.stage.terradatum.com"
"http://app.terradatum.com"
"https://app.terradatum.com"
]
}
}
}
我都試過以下HOCON,同環境被設置爲顯示還有:
# HOCON
allowedOrigins = ${?APP_ALLOWED_ORIGINS}
# ENV
export APP_ALLOWED_ORIGINS='"http://app.127.0.0.1.nip.io:8080","http://app.192.168.64.2.nip.io","http://app.192.168.42.173.nip.io","http://app.terradatum.local","http://app.dev.terradatum.com","https://app.dev.terradatum.com","http://app.stage.terradatum.com","https://app.stage.terradatum.com","http://app.terradatum.com","https://app.terradatum.com"'
而且......
# HOCON
allowedOrigins = [
${?APP_ALLOWED_ORIGINS}
"http://app.127.0.0.1.nip.io:8080"
"http://app.192.168.64.2.nip.io"
"http://app.192.168.42.173.nip.io"
"http://app.terradatum.local"
"http://app.dev.terradatum.com"
"https://app.dev.terradatum.com"
"http://app.stage.terradatum.com"
"https://app.stage.terradatum.com"
"http://app.terradatum.com"
"https://app.terradatum.com"
]
# ENV
export APP_ALLOWED_ORIGINS="http://some-new-cors.terradatum.com\nhttps://some-new-cors.terradatum.com\n"
許多其他CORS實現允許正則表達式,而WTH不玩?
這且不說,列出的HOCON處理一直是我很成問題......與第一執行上述工作,但任何迭代,我必須在application.conf
沒有一個現有的默認列表...
通過環境變量替換向HOCON添加列表或列表項目的建議方法是什麼?
這是答案,但不是我正在尋找的東西...儘管你說得很好,我已經更新了我的問題,以便實際包含一個問題。如果您閱讀了12因子應用程序的指導,您會發現這是一個基本要求,您的應用程序的配置可以通過環境進行修改。當然,這是不可能100%的時間(嵌入式'reference.conf'文件不遵循env-replacement方案),也許CORS允許的起源不是最好的例子,但它仍然是我需要的東西解決。 – rbellamy
是的,你回答了我的問題的第二部分 - 「添加一個列表項」到HOCON列表中 – rbellamy