Opened 6 years ago

Closed 6 years ago

#31432 closed Cleanup/optimization (wontfix)

Conform to HTTP Status Code RFC's redirect classes.

Reported by: Jacob Stöhr Owned by: nobody
Component: HTTP handling Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Hello,

while filing (and trying to fix) #31430 I noticed that the class HttpResponsePermanentRedirect in django.http.response has its status_code set to 301.

According to the http python module and more specifically RFC 7238 (​https://tools.ietf.org/html/rfc7238) the name PermanentRedirect is used to describe the HTTP Status code 308. 301 is called MovedPermanently according to RFC 7231 (​https://tools.ietf.org/html/rfc7231#section-6.4.2).

Therefore I propose to rename the class HttpResponsePermanentRedirect to HttpResponseMovedPermanently with a status code of 301 and to modify the existing class to have a status code of 308. I am aware that this is backwards incompatible and will break 33 currently existing tests (I tested it real quick locally) and probably countless uses in tests. However I think it is important to comply with the official spec.

I would appreciate any feedback, I don't know who would be responsible for this kind of ticket so I cannot assign it directly.
If desired, I could probably come up with a patch or at least help with creating one.

Regards,
Jacob

Change History (1)

comment:1 by Mariusz Felisiak, 6 years ago

Component: Uncategorized → HTTP handling
Resolution: → wontfix
Status: new → closed
Summary: Conform to HTTP Status Code RFC's more closely (django.http.response redirect classes) → Conform to HTTP Status Code RFC's redirect classes.

RFC 7238 is still experimental and as you already mentioned this change is strongly backward incompatible. Moreover 307/308 do not allow changing the request method from POST to GET. Deprecation process would be quite complicated. Please start a discussion on the DevelopersMailingList, we can re-open this ticket if we reach a consensus on a mailing list.

Related to #30582.

Note: See TracTickets for help on using tickets.
Back to Top