如何配置phoenix / elixir应用程序以接受https请求

时间:2017-10-07 05:17:38

标签: elixir phoenix-framework

我创建了一些凤凰应用程序,默认情况下似乎都不接受https请求。我收到错误[error] Cowboy returned 400 and there are no headers in the connection.。 Http请求按预期返回数据。

1 个答案:

答案 0 :(得分:1)

我认为您需要在相关config.exs中配置应用的端点 - 例如:

config :my_app, MyApp.Endpoint,
  http: [port: {:system, "PORT"}],
  url: [scheme: "https", host: System.get_env("HOST"), port: 443],
  force_ssl: [rewrite_on: [:x_forwarded_proto]]

其中System.get_env("HOST")是您的应用的网址... localhost:4000,就本地开发而言,我认为。

文档 - http://wsmoak.net/phoenix/Phoenix.Endpoint.html

然后你需要添加CORS插件 - https://github.com/mschae/cors_plug

我构建了一个凤凰应用程序作为API,我按照文档的说明,将它设置在我的路由器中,就像它们一样,或多或少:

pipeline :api do
  plug CORSPlug, [origin: Application.get_env(:my_app, :client_url)]
  plug :accepts, ["json"]
end


scope "/api", PhoenixApp do
  pipe_through :api

  resources "/articles", ArticleController
  options   "/articles", ArticleController, :options
  options   "/articles/:id", ArticleController, :options
end