我已经构建了一个APIView:
class CustomAPIView(APIView):
def get(self, request, *args, **kwargs):
if not request.user or not request.user.is_authenticated():
return Response("User not logged in", status=status.HTTP_403_FORBIDDEN)
# Other stuff
在我的html模板中,我正在使用fetchAPI调用它:
fetch('/api/request/url/', {method: 'get'})
.then(
// Process info );
我已经通过所有这些登录了,但是我总是在APIView返回AnonymousUser中的request.user变量中得到403响应。但是,如果我尝试手动访问api url,一切正常。
有人可以指出我缺少的东西吗?
提前致谢。
答案 0 :(得分:1)
fetch api的问题在于defualt它不会向服务器发送cookie。
默认情况下,fetch不会从服务器发送或接收任何cookie, 如果站点依赖,则会导致未经身份验证的请求 维护用户会话(发送cookie,凭证init 必须设置选项)。
所以你必须在你的获取请求中设置凭证:'same-origin',
fetch('/api/request/url/', {method: "GET", credentials: 'same-origin'})
.then(
// Process info );
对于跨源请求,请使用credentials: 'include'