diff --git a/app/logical/danbooru/http/redirector.rb b/app/logical/danbooru/http/redirector.rb index 26331226e..388dd3d58 100644 --- a/app/logical/danbooru/http/redirector.rb +++ b/app/logical/danbooru/http/redirector.rb @@ -31,7 +31,7 @@ module Danbooru uri = HTTP::URI.parse(location) verb = request.verb - verb = :get if response.status == 303 && !request.verb.in?([:get, :head]) + verb = :get if response.status.in?([302, 303]) && !request.verb.in?([:get, :head]) request.redirect(uri, verb) end diff --git a/test/unit/danbooru_http_test.rb b/test/unit/danbooru_http_test.rb index 3187e60dd..0c5dbd623 100644 --- a/test/unit/danbooru_http_test.rb +++ b/test/unit/danbooru_http_test.rb @@ -78,6 +78,13 @@ class DanbooruHttpTest < ActiveSupport::TestCase end end + context "#post method" do + should "follow 302 redirects with a GET" do + response = Danbooru::Http.get(httpbin_url("redirect-to?url=#{httpbin_url("get")}")) + assert_equal(200, response.status) + end + end + context "cache feature" do should "cache multiple requests to the same url" do http = Danbooru::Http.cache(1.hour)