Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSRF verification failed. Request aborted. #189

Open
jrvarma opened this issue Oct 11, 2024 · 3 comments · May be fixed by #190
Open

CSRF verification failed. Request aborted. #189

jrvarma opened this issue Oct 11, 2024 · 3 comments · May be fixed by #190

Comments

@jrvarma
Copy link
Contributor

jrvarma commented Oct 11, 2024

I am doing a new install of Etebase (planning to migrate my existing self hosted Etesync 1.0 data to Etebase). I set it up using the instructions in the Readme, Basic Setup and Production Setup. Reached up to the point where nginx is set up to serve the website on port 8000 and communicate with etebase using web port 8001. The admin page comes up correctly but when I enter the superuser credentials, I get the 403 error CSRF verification failed. Request aborted.

I then disabled the nginx site by deleting /etc/nginx/sites-enabled/etebase_nginx.conf and restarting nginx. I then asked uvicorn to serve the site directly on port 8000. When I do this, authentication goes through correctly, and I am presented with the site administration page. So the issue is with some interaction between the etebase_nginx.conf configuration and the etebase.ini configuration. I am not at all familiar with Django, but I understand that CSRF verification failed is related to allowed hosts, but I would think that allowed_host1 = * should cover everything. What else could be going wrong?

Any pointers on how I can debug this?

@daftaupe
Copy link
Collaborator

@jrvarma did you try putting your real domain name in allowed_host1 variabel instead of * ?
Also do you have proxy_set_header Host $host; in the nginx configuration ?

@jrvarma
Copy link
Contributor Author

jrvarma commented Oct 14, 2024

@daftaupe putting my real domain name in allowed_host1 variable did not help. And, yes, I have proxy_set_header Host $host; in the nginx configuration

@jrvarma
Copy link
Contributor Author

jrvarma commented Oct 14, 2024

SOLVED

Running with debug = true showed that the actual error was not in allowed hosts but in trusted origins.

Origin checking failed xxx does not match any trusted origins

This was because I am running the server on a non standard port. I edited the line in settings.py to include a hardcoded port

CSRF_TRUSTED_ORIGINS = ... ["http://" + y + ":NNNN" for x, y in ...

And then it worked!

Might be a good idea to read port from the ini file instead.

@jrvarma jrvarma linked a pull request Oct 18, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants