【发布时间】:2015-08-06 04:33:00
【问题描述】:
我有一个 Angular 应用程序使 CORS 消耗了一个休息 api(Django Rest 框架)。现在我想GET 来自http://127.0.0.1/api/users 的所有用户。我已经启用我的后端以允许 cors 请求,如果 django 视图未设置任何权限限制 (permission_classes = ()),我可以毫无问题地获取数据。但是如果有权限限制IsAdminUser,我会失败。如果以管理员身份登录,我可以在浏览器中成功查看具有权限的用户。我的问题是如何让 Angular 使用 csrftoken 在获得许可的情况下使用其余 api。
用户列表视图:
# List all the users or create a new user
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (IsAdminUser,)
angular中的代码:
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
$httpProvider.defaults.withCredentils = true;
和:
.run(function run($http, $cookies){
// For CSRF token compatibility with Django
$http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken;
}
错误:
Failed to load resource: the server responded with a status of 403 (Forbidden)
【问题讨论】:
标签: angularjs django rest cors django-cors-headers