From 18a7611ae46978ea01d90b3bc0dd6614d0c6f76f Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Mon, 14 Feb 2022 15:03:04 -0300 Subject: [PATCH 1/2] PERF: Do not set any caching headers on preflight requests This will allow each app that uses this library to handle caching behavior of the preflight requests in a way that makes sense for their app on their own CORS middleware. --- lib/message_bus/rack/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/message_bus/rack/middleware.rb b/lib/message_bus/rack/middleware.rb index 618ddf40..3bd33e05 100644 --- a/lib/message_bus/rack/middleware.rb +++ b/lib/message_bus/rack/middleware.rb @@ -94,7 +94,7 @@ def handle_request(env) end if env["REQUEST_METHOD"] == "OPTIONS" - return [200, headers, ["OK"]] + return [200, { "Content-Type" => "text/html" }, ["OK"]] end user_id = @bus.user_id_lookup.call(env) if @bus.user_id_lookup From 615232033ea1304e30a9953a946b5bc23a74b6af Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Thu, 17 Feb 2022 17:30:36 -0300 Subject: [PATCH 2/2] Allow custom headers on preflight requests --- lib/message_bus/rack/middleware.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/message_bus/rack/middleware.rb b/lib/message_bus/rack/middleware.rb index 3bd33e05..02e6d3b5 100644 --- a/lib/message_bus/rack/middleware.rb +++ b/lib/message_bus/rack/middleware.rb @@ -82,19 +82,19 @@ def handle_request(env) return [404, {}, ["not found"]] unless client_id headers = {} + extra_headers = {} headers["Cache-Control"] = "must-revalidate, private, max-age=0" headers["Content-Type"] = "application/json; charset=utf-8" headers["Pragma"] = "no-cache" headers["Expires"] = "0" if @bus.extra_response_headers_lookup - @bus.extra_response_headers_lookup.call(env).each do |k, v| - headers[k] = v - end + extra_headers = @bus.extra_response_headers_lookup.call(env) + headers.merge!(extra_headers) end if env["REQUEST_METHOD"] == "OPTIONS" - return [200, { "Content-Type" => "text/html" }, ["OK"]] + return [200, extra_headers.merge({ "Content-Type" => "text/html" }), ["OK"]] end user_id = @bus.user_id_lookup.call(env) if @bus.user_id_lookup