diff options
| author | Stormwind <stormwind@stormwinds-page.de> | 2023-06-01 09:11:34 +0200 | 
|---|---|---|
| committer | Stormwind <stormwind@stormwinds-page.de> | 2023-06-01 09:11:34 +0200 | 
| commit | e96b602cb88e78adfed009ccd620c4385af01a0b (patch) | |
| tree | 366c0a8a3f22ad76b487ec438e748f5c935a84aa | |
| parent | b582ca5d8aafdf9bfaccbe67c74aa532cbfc4f1a (diff) | |
Correct HTTP status code on redirect
With the release of RFC 7231 in June 2014 the HTTP status code 302 - Moved
Temporarily does no longer exist in this form and has been replaced by
302 - Found, which causes the browser to use the same request method to
call the new resource.
Which can cause unwanted deletions of resouces, when a child resource is
deleted and the browser gets redirected to the parent resource.
Instead we use now the status code 303 - See Others, which specifies, that
the referred resource has to be called using the GET method.
| -rw-r--r-- | lib/zero/response.rb | 5 | ||||
| -rw-r--r-- | spec/unit/zero/response/redirect_spec.rb | 4 | 
2 files changed, 5 insertions, 4 deletions
| diff --git a/lib/zero/response.rb b/lib/zero/response.rb index 272e5e2..63441e9 100644 --- a/lib/zero/response.rb +++ b/lib/zero/response.rb @@ -85,10 +85,11 @@ module Zero        self.header['Content-Type'] = value      end -    # Sets the Location header to the given URL and the status code to 302. +    # Sets the Location header to the given URL and the status code to +    # 303 - See Other.      #       # @param [String] location Redirect URL -    def redirect(location, status = 302) +    def redirect(location, status = 303)        self.status = status        self.header['Location'] = location      end diff --git a/spec/unit/zero/response/redirect_spec.rb b/spec/unit/zero/response/redirect_spec.rb index 41ec369..ea51668 100644 --- a/spec/unit/zero/response/redirect_spec.rb +++ b/spec/unit/zero/response/redirect_spec.rb @@ -5,11 +5,11 @@ describe Zero::Response do    subject { Zero::Response.new() }    describe '#redirect' do -    it "sets the status to 302 and the given Location URL in header" do +    it "sets the status to 303 and the given Location URL in header" do        subject.redirect 'http://foo.bar/relocated/thingy'        value = subject.to_a -      value[0].should eq(302) +      value[0].should eq(303)        value[1]['Location'].should eq('http://foo.bar/relocated/thingy')      end | 
