我无法向我的数据库发送成功的post
请求,我不断获得post url 403 (Forbidden)
。
我认为这是因为我的csrf token
因为来自管理员我可以毫无问题地发布帖子请求。
我的设置是:
Api查看:
class ContactFormViewSet(viewsets.ModelViewSet):
queryset = ContactForm.objects.all()
serializer_class = ContactFormSerializer
def post(self): # This returns metrics only for the logged in user
user_id = self.request.user.id
return GoogleProperty.objects.filter(user_id=user_id)
串行:
class ContactFormSerializer(serializers.ModelSerializer):
class Meta:
fields = (
'google_email',
'property_name',
'url',
'message',
'created'
)
model = ContactForm
我的设置如下:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':(
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend',
),
}
最后我的axios电话看起来像这样:
var url = '/api/v2/messages/'
let token = document.head.querySelector("[name=_token]").content
console.log(token)
axios.post(url,{
headers: {"X-CSRFToken": token},
data: {
google_email:'vm.email',
property_name:'vm.property',
url: 'sss',
message: vm.message,
xsrfHeaderName: token
}
})
我有一个像<meta name="_token" content="{{ csrf_token }}">
令牌在我的控制台中打印正常,我更喜欢这种方法,因为我没有使用jquery。
我已经关注this回答/问题,但它似乎并不适合我。
为什么我的帖子请求失败?