Django:禁止(未设置CSRF cookie),发生这种情况的原因以及解决方法

我写了一个测试文件来检查URL是否有效,并且它一直在打印禁止打印(未设置CSRF cookie)。请检查是什么问题

#post handler
@csrf_exempt
    def post(self,request,*args,**kwargs):
        valid_json = is_json(request.body)
        if not valid_json:
            error_data = json.dumps({'message': 'Invalid data sent,please send using JSON format'})
            return self.render_to_response(error_data,status=400)
        data = json.loads(request.body)
        form = SupervisorForm(data)
        if form.is_valid():
            obj = form.save(commit=True)
            obj_data = obj.serialize()
            return self.render_to_response(obj_data,status=201)
        if form.errors:
            data_error = json.dumps(form.errors)
            return self.render_to_response(data_error,status=400)
        json_data = json.dumps({'message': 'Not Allowed'})
        status_code = HTTP_400_BAD_REQUEST
        return self.render_to_response(json_data,status_code)


def post():
    data = {
        'supervisor_name':'name','supervisor_phone': '76786875','supervisor_email': 'sdsds@sdsd.com','supervisor_image': 'path to local image',}
    json_data = json.dumps(data)
    json_loads = json.loads(json_data)
    print(type(json_data))
    print(type(json_loads))
    print(help(requests.put))
    r = requests.put('http://127.0.0.1:8000/api',json = json.dumps(data))

    return r.json()
bohaooffice 回答:Django:禁止(未设置CSRF cookie),发生这种情况的原因以及解决方法

您可能已将Django配置为使用CSRF令牌,但尚未为您的API设置它。您可以在配置中禁用CSRF吗?否则,您必须按照documentation

进行设置

对于那些极有可能通过脚本/ iframe被黑的网站,CSRF非常重要。 CSRF可以防止您的银行帐户通过电子邮件/弹出脚本向黑客汇款。除非您建立的网站具有针对用户的机密数据(例如Facebook,Venmo,PayPal),否则不需要CSRF。

本文链接:https://www.f2er.com/3169723.html

大家都在问