Commit 10b2383f authored by George Koltsov's avatar George Koltsov

Exclude json content type from workhorse interception

parent ab006779
...@@ -116,7 +116,7 @@ class ApplicationController < ActionController::Base ...@@ -116,7 +116,7 @@ class ApplicationController < ActionController::Base
def render(*args) def render(*args)
super.tap do super.tap do
# Set a header for custom error pages to prevent them from being intercepted by gitlab-workhorse # Set a header for custom error pages to prevent them from being intercepted by gitlab-workhorse
if response.content_type == 'text/html' && (400..599).cover?(response.status) if workhorse_excluded_content_types.include?(response.content_type) && (400..599).cover?(response.status)
response.headers['X-GitLab-Custom-Error'] = '1' response.headers['X-GitLab-Custom-Error'] = '1'
end end
end end
...@@ -124,6 +124,10 @@ class ApplicationController < ActionController::Base ...@@ -124,6 +124,10 @@ class ApplicationController < ActionController::Base
protected protected
def workhorse_excluded_content_types
@workhorse_excluded_content_types ||= %w(text/html application/json)
end
def append_info_to_payload(payload) def append_info_to_payload(payload)
super super
......
...@@ -641,24 +641,32 @@ describe ApplicationController do ...@@ -641,24 +641,32 @@ describe ApplicationController do
end end
end end
it 'does not set a custom header' do it 'sets a custom header' do
get :index, format: :json get :index, format: :json
expect(response.headers['X-GitLab-Custom-Error']).to be_nil expect(response.headers['X-GitLab-Custom-Error']).to eq '1'
end end
end
context 'given a json response for an html request' do context 'for html request' do
controller do it 'sets a custom header' do
def index get :index
render json: {}, status: :unprocessable_entity
expect(response.headers['X-GitLab-Custom-Error']).to eq '1'
end end
end end
it 'does not set a custom header' do context 'for 200 response' do
get :index controller do
def index
render json: {}, status: :ok
end
end
expect(response.headers['X-GitLab-Custom-Error']).to be_nil it 'does not set a custom header' do
get :index, format: :json
expect(response.headers['X-GitLab-Custom-Error']).to be_nil
end
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment