使用 django-rest-framework。在 nginx 后面的生产环境中运行时出现 HTTP 403 错误。当我调用从 APIView 继承以支持 GET 操作的特定视图时,我得到:
{"detail": "Invalid username/password"}
但是......我只在浏览器中得到这个。当我对同一个 URL 使用 curl 时,我不明白。无论是直接点击 URL,还是在 Chrome 和 Firefox 中通过 AJAX 加载 URL,我都会收到此错误。
如果我首先使用管理员帐户通过 Django Admin 登录,我不会收到错误消息。
另外,我只知道这是我从 nginx 后面运行的。如果我使用 Django 开发服务器或 gunicorn 运行,并直接点击端口,我很好,并且可以愉快地匿名点击 URL。如果我把 nginx 放在前面,转发到同一个 gunicorn/runserver 我得到这个错误。
也许这与我的 nginx proxy_pass 设置有关?
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
我正在运行 django rest 框架 2.2.6、Django 1.5 和 nginx 1.2.7。
我在休息框架中将限制设置为一个愚蠢的高数字,并查看了默认情况下似乎都是开放的权限(但也设置得如此明确)。
谁能指出我正确的方向?
谢谢!
卢多。