Add fix to ensure URL is encoded when reverse proxying
This commit is contained in:
parent
ab4edf7933
commit
425329bacd
1 changed files with 16 additions and 0 deletions
|
|
@ -158,6 +158,8 @@ defmodule Pleroma.ReverseProxy do
|
||||||
Logger.debug("#{__MODULE__} #{method} #{url} #{inspect(headers)}")
|
Logger.debug("#{__MODULE__} #{method} #{url} #{inspect(headers)}")
|
||||||
method = method |> String.downcase() |> String.to_existing_atom()
|
method = method |> String.downcase() |> String.to_existing_atom()
|
||||||
|
|
||||||
|
url = maybe_encode_url(url)
|
||||||
|
|
||||||
case client().request(method, url, headers, "", opts) do
|
case client().request(method, url, headers, "", opts) do
|
||||||
{:ok, code, headers, client} when code in @valid_resp_codes ->
|
{:ok, code, headers, client} when code in @valid_resp_codes ->
|
||||||
{:ok, code, downcase_headers(headers), client}
|
{:ok, code, downcase_headers(headers), client}
|
||||||
|
|
@ -449,4 +451,18 @@ defmodule Pleroma.ReverseProxy do
|
||||||
_ -> delete_resp_header(conn, "content-length")
|
_ -> delete_resp_header(conn, "content-length")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Only when Tesla adapter is Hackney or Finch does the URL
|
||||||
|
# need encoding before Reverse Proxying as both end up
|
||||||
|
# using the raw Hackney client and cannot leverage our
|
||||||
|
# EncodeUrl Tesla middleware
|
||||||
|
# Also do it for test environment
|
||||||
|
defp maybe_encode_url(url) do
|
||||||
|
case Application.get_env(:tesla, :adapter) do
|
||||||
|
Tesla.Adapter.Hackney -> Pleroma.HTTP.encode_url(url)
|
||||||
|
{Tesla.Adapter.Finch, _} -> Pleroma.HTTP.encode_url(url)
|
||||||
|
Tesla.Mock -> Pleroma.HTTP.encode_url(url)
|
||||||
|
_ -> url
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue