Opened 13 years ago
Closed 13 years ago
#16040 closed New feature (fixed)
test.Client does not handle domain changes on redirection follow
Reported by: | Jeremy Dunck | Owned by: | nobody |
---|---|---|---|
Component: | Testing framework | Version: | 1.3 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
The default SERVER_NAME used by the test client is testserver.
I have a multi-tenant site serving www.foo.com and www.bar.com. I also have a view which redirects from /spam/ to /eggs/.
Middleware handles the domain redirection, while a view handles the /spam/ -> /eggs/ redirection.
If the test client requests http://www.foo.com/spam/, it is redirected to http://www.bar.com/spam/, but _handle_redirects, while parsing url into scheme and path, does not also update SERVER_NAME in extras. This causes the 2nd request handling to be handled as though it were for http://www.foo.com/spam/ (again), causing a redirection loop.
I think that just as wsgi.url_scheme is updated for scheme, extra['SERVER_NAME'] should be updated for netloc.
It's debatable to me whether this is a bug or a feature -- I realize multi-tenancy is relatively unusual under Django.
Attachments (1)
Change History (7)
comment:1 by , 13 years ago
Description: | modified (diff) |
---|
comment:2 by , 13 years ago
Description: | modified (diff) |
---|
comment:3 by , 13 years ago
Description: | modified (diff) |
---|
comment:4 by , 13 years ago
Component: | Uncategorized → Testing framework |
---|---|
Triage Stage: | Unreviewed → Accepted |
by , 13 years ago
Attachment: | 16040.patch added |
---|
comment:5 by , 13 years ago
Has patch: | set |
---|
Indeed, it seems that the server name should be preserved, like the url scheme. See also #12011.