diff options
author | Claire <claire.github-309c@sitedethib.com> | 2024-01-10 16:05:46 +0100 |
---|---|---|
committer | Claire <claire.github-309c@sitedethib.com> | 2024-01-24 15:31:06 +0100 |
commit | 458620bdd4d0b8af49b6eef02050b32814acf6e8 (patch) | |
tree | 5c63df745b0f88648a927777ac97704b27963f83 | |
parent | a1a71263e09704ca84d30763a03512e2a59091bf (diff) |
Fix potential redirection loop of streaming endpoint (#28665)
-rw-r--r-- | app/controllers/api/v1/streaming_controller.rb | 7 | ||||
-rw-r--r-- | spec/controllers/api/v1/streaming_controller_spec.rb | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/app/controllers/api/v1/streaming_controller.rb b/app/controllers/api/v1/streaming_controller.rb index 23fe64e1beb..843065adba0 100644 --- a/app/controllers/api/v1/streaming_controller.rb +++ b/app/controllers/api/v1/streaming_controller.rb @@ -2,7 +2,7 @@ class Api::V1::StreamingController < Api::BaseController def index - if Rails.configuration.x.streaming_api_base_url == request.host + if same_host? not_found else redirect_to streaming_api_url, status: 301 @@ -11,6 +11,11 @@ class Api::V1::StreamingController < Api::BaseController private + def same_host? + base_url = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url) + request.host == base_url.host && request.port == (base_url.port || 80) + end + def streaming_api_url Addressable::URI.parse(request.url).tap do |uri| base_url = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url) diff --git a/spec/controllers/api/v1/streaming_controller_spec.rb b/spec/controllers/api/v1/streaming_controller_spec.rb index 4ab409a5410..96062ead706 100644 --- a/spec/controllers/api/v1/streaming_controller_spec.rb +++ b/spec/controllers/api/v1/streaming_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe Api::V1::StreamingController do around(:each) do |example| before = Rails.configuration.x.streaming_api_base_url - Rails.configuration.x.streaming_api_base_url = Rails.configuration.x.web_domain + Rails.configuration.x.streaming_api_base_url = "wss://#{Rails.configuration.x.web_domain}" example.run Rails.configuration.x.streaming_api_base_url = before end |