Django REST框架SessionAuthentication似乎不起作用?

时间:2013-10-05 16:50:27

标签: django rest session authentication frameworks

我为AJAX网络应用程序(以及将来的本机客户端)配置了一个Django REST API,用于SessionAuthentication,TokenAuthentication和OAuth2Authentication。

Token en OAuth2身份验证工作正常,但SessionAuthentication的行为尚未像我希望的那样工作。

我目前有两个REST API具有相同的配置:

http://api.sandbox.dev:8080/http://www.sandbox.dev:8080/api/

我的AJAX网络应用程序位于http://www.sandbox.dev:8080

代码:

每当我在www.sandbox.dev的api.sandbox.dev上对API进行AJAX调用时,都会收到“403 Forbidden”错误。我认为我做了所有正确的事情,让事情跨域工作或者我错过了什么?

提前感谢您提供任何帮助或提示!

亲切的问候, 克里斯托夫

2 个答案:

答案 0 :(得分:3)

如果您使用Apache mod_wsgi来提供服务,则可能需要将以下内容添加到VirtualHost配置文件中,因为mod_wsgi会删除授权标头。您需要将以下内容添加到VirtualHost配置中:

WSGIPassAuthorization On

进一步参考:http://django-rest-framework.org/api-guide/authentication.html#unauthorized-and-forbidden-responses

答案 1 :(得分:2)

这应该有效:

jquery.rest.js

$.ajax({
    xhrFields: {withCredentials: true},
    ...
});

settings.py:

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = ('www.sandbox.dev:8080', )

SESSION_COOKIE_DOMAIN = '.sandbox.dev'
CSRF_COOKIE_DOMAIN = '.sandbox.dev'