我使用postman来检查我的django-rest-framework的json响应。
当我第一次尝试通过POST方法将ID、电子邮件、密码发布到我在AWS(亚马逊网络服务)上的Django时,它运行得很好。它返回像:
{
"key": "99def123123123123d88e15771e3a8b43e71f"
}
但第一次尝试后,换句话说,从第二次尝试它返回
{"detail":"CSRF Failed: CSRF token missing or incorrect."}
(另外编辑+)我的腻子终端说"POST /rest-auth/login/ HTTP/1.1" 403 58
我看到了http://kechengpuzi.com/q/s31108075,但它不适合我的情况。
从http://django-rest-framework.narkive.com/sCyJk3hM/authentication-ordering-token-vs-session,我找不到使用postman的解决方案
1.如何正确使用Postman?
1.或者你能推荐其他的工具来使用吗?
我正在使用retrofit 2的Android应用程序,所以我需要工具来检查POST,GET方法和响应。
8条答案
按热度按时间mznpcxlj1#
如果在DRF中使用基于令牌的身份验证,请不要忘记在settings.py中设置它。否则您将得到一个CSRF错误
to94eoyn2#
我也遇到了同样的问题。在第一次获得令牌后,我被要求在每个请求中包含CSRF,因此我意识到启用了Session和Token身份验证方法,因此我注解掉了SessionAuthentication行(当然,您也可以删除它)
在那之后,我可以只使用我的凭证来请求令牌,而不包括任何CSRF代码:
我认为激活这两个认证类的事实导致了Django的混乱。
9vw9lbht3#
你的API需要CSRF token,你必须在请求中添加CSRF token(和postman):
您可以从表单输入字段获取CSRF令牌(如果您使用django内置表单API,您会发现一个隐藏字段),或者如果您使用 AJAX ,您可以查看跨站请求伪造保护。它与您的授权密钥无关,您的密钥用于识别您是谁,CSRF令牌用于确保此请求从您的服务器发送。
ttisahbt4#
对我来说,解决方案是在Postman中添加
X-CSRFToken
头(从浏览器中的初始登录响应中获得)参见https://stackoverflow.com/a/26639895/8133649
xlpyo6sf5#
在settings.py文件中
在项目urls.py
打开终端作为
您的令牌密钥也将自动保存在数据库中
转到postman标题(如示例中所示)例如:screenshot from postman ,where and how to paste accessed toke然后插入令牌密钥。
reference to get token key from this video
2j4z5cfb6#
我改变了请求方法从邮政补丁,我可以登录
jgovgodb7#
您可以在json数据中使用
csrfmiddlewaretoken: csrf_token
,其中csrf_token是有效的token,但在包含它的情况下,您无法提供正确的token,注解或删除SessionAuthentication
,如下所示。xdyibdwo8#
{{ csrf_token}}
。向 Postman 请求该URL。作为响应,您将看到令牌