Opened 12 years ago

Closed 11 years ago

Last modified 11 years ago

#18987 closed Uncategorized (invalid)

Django contrib admin redirection error on actions

Reported by: audirs2 [at] gmail.com Owned by: nobody
Component: contrib.admin Version: 1.4
Severity: Normal Keywords: redirect remote_auth_backend nginx
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Aymeric Augustin)

When user remote user authentication backend and accessing django application via Nginx proxy on subdomain behind this proxy the admin interface does not redirect from admin actions correctly.

Settings below are applied:

FORCE_SCRIPT_NAME=''
APPEND_SLASH=False

Server is running mod_wsgi

accessing works ok.

https://djangoapp.domain.com/admin/

When using an admin action to add/delete etc redirects badly.

E.g. on page url below you update some config and click add as the admin action, the underlying code carries out the action.

https://djangoapp.domain.com/admin/appname/add/

However when django redirects back to the apps list of objects it redirects badly to a url shown in the form below

https://djangoapp.domain.com/admin/appname/add/.domain.com/admin/appname/add/

It appears that the url resolution is using the domain with subdomain stripped and then as this is not the same full url it appends this url to the current one

Change History (3)

comment:1 by audirs2 [at] gmail.com, 11 years ago

Appears to be caused by TemplateResponse handling

in reply to:  1 comment:2 by audirs2 [at] gmail.com, 11 years ago

Upon further investigation it appears to be caused by the HTTP module django/http/init.py in build_absolute_uri

Where the location full path is returned incorrectly by urlparse in the form .domain.com/admin/appname/add/ and self.path is used by get_full_path both have the same issue.

Suggest changing the behaviour of build abosolute url to check for this behaviour as their should always be a leading slash on the url so could check if that is the case and split the url if required. e.g.

   self.path.split('/',1)[1] 

to obtain the actual path?

comment:3 by Aymeric Augustin, 11 years ago

Description: modified (diff)
Resolution: invalid
Status: newclosed

(Fixed formatting -- please use preview.)

If I understand correctly you have two layers: a frontend (nginx) that dispatches to a backend (apache+mod_wsgi). This is a very common setup and you don't need FORCE_SCRIPT_NAME to make it work properly.

I don't understand your second comment: I don't see anything related to urlparse in build_absolute_uri.

Generally speaking, the information you've provided is rather sparse, and we have evidence that the admin works for thousands of developers using the same setup as you.

This looks like a misconfiguration. I suggest using the support channels.

Last edited 11 years ago by Aymeric Augustin (previous) (diff)
Note: See TracTickets for help on using tickets.
Back to Top