Skip to content

Commit ac52c51

Browse files
Rewrite protocol to https when x-forwarded-proto is wss (#1302)
1 parent 07efcb7 commit ac52c51

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

lib/plug/rewrite_on.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ defmodule Plug.RewriteOn do
9696
defp put_scheme(%{scheme: :http, port: 80} = conn, ["https"]),
9797
do: %{conn | scheme: :https, port: 443}
9898

99+
defp put_scheme(%{scheme: :http, port: 80} = conn, ["wss"]),
100+
do: %{conn | scheme: :https, port: 443}
101+
99102
defp put_scheme(conn, ["https"]),
100103
do: %{conn | scheme: :https}
101104

test/plug/rewrite_on_test.exs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ defmodule Plug.RewriteOnTest do
3737
assert conn.port == 443
3838
end
3939

40+
test "rewrites http to https when x-forwarded-proto value wss" do
41+
conn =
42+
conn(:get, "http://example.com/")
43+
|> put_req_header("x-forwarded-proto", "wss")
44+
|> call(:x_forwarded_proto)
45+
46+
assert conn.scheme == :https
47+
assert conn.port == 443
48+
end
49+
4050
test "doesn't change the port when it doesn't match the scheme" do
4151
conn =
4252
conn(:get, "http://example.com:1234/")

0 commit comments

Comments
 (0)