我正在为我的项目使用rest-framework-api,并且尝试使用具有POST方法的端点来创建用户。但是,响应始终为403禁止->(CSRF令牌丢失或不正确。):
我已经尝试了stackoverflow上的所有方法:csrf_exempt装饰器,authentication_classes = [],CsrfExemptMixin
这些方法都不起作用...我总是得到相同的答案“ 403 Forbiddden”
PS:我正在通过POSTMAN发送请求
API:
permission_classes = (AllowAny,)
authentication_classes = []
# Serializer class to validate input and serialize output
# Can be overridden by get_serializer_class()
queryset = User.objects.all()
serializer_class = UserSerializer`
网址:
api.register(r'auth/sign-up', views.UserEP, basename='userEP')
我的目的仅仅是实现一个允许任何用户创建帐户的端点。
答案 0 :(得分:-1)
只需从项目设置中删除csrf中间件。这将解决问题。
以下是该中间件的实际名称:
JsonObjectRequest request = new JsonObjectRequest(Method.GET, url, JSONObject, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//handle response here
}}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//handle error here
}}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String credentials = "username:password";
String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Content-Type", "application/json");
headers.put("Authorization", auth);
return headers;
}
}