如何将xml卷曲到本地运行的django应用程序?
我可以使用以下命令点击我的端点:
curl http://localhost:8000/api/remote/docusign_connect/ -H 'Accept: application/xml' -H 'Content-Type: application/xml'
但是我无法在请求正文中添加任何xml。我收到CSRF token missing or incorrect
错误。
curl http://localhost:8000/api/remote/docusign_connect/ -b csrftoken=mycsrf -d "<status>A note</status>" -H 'Accept: application/xml' -H 'Content-Type: application/xml'
我也尝试使用--data-urlencode
代替-d
为什么我可以使用第一个curl请求而不是第二个curl请求命中端点? (第二次请求需要csrf但不是第一次请求)
答案 0 :(得分:0)
为什么我可以使用第一个curl请求而不是第二个curl请求命中端点? (第二次请求需要csrf但不是第一次请求)
首先,您正在执行GET
请求。对于CSRF,GET
请求被视为安全。
在第二步中,您正在执行POST
请求。 POST
请求会对您的系统产生副作用,因此必须对CSRF提供某种保护。
要解决此问题,您需要在第二个请求中提供正确的csrftoken
。通常,您应该能够通过发出GET
请求来获取CSRF令牌,因为您已经发出了第一个GET
请求,csrftoken
可能应该单独在HTTP标头或Cookie中传递。 (使用curl打印标题)
这里有关于Django CSRF
的文档