2017-10-07 1 views
1

phoenixアプリケーションをいくつか作成しましたが、デフォルトではhttps要求を受け付けないようです。エラー[error] Cowboy returned 400 and there are no headers in the connection.が表示されます。 HTTP要求は期待どおりのデータを返します。https要求を受け入れるようにphoenix/elixirアプリケーションを設定するには

+0

私はこれをしませんでした。むしろPhoenixでhttpリクエストだけを提供し、Nginxのようなhttpサーバにhttpとhttpsリクエストの両方を提供させます。 NginxはそれらをPhoenixに代理します。セットアップとメンテナンスが簡単です。 –

答えて

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")アプリのURL ... 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 
+0

URL:[scheme: "https"、host:System: "host"、port:443]、 '' host:System.get_env( " HOST ")、ポート:443]、'。 2番目のバリエーションは、環境変数** ** HOSTを構築する**にあなたの設定を修正します。 '{:system、" HOST "}'は実行時に評価されます。 – djinn

+0

@djinnすごく便利なチップです。 – skwidbreth

関連する問題