django curl localhost xml请求

时间:2015-05-04 18:41:07

标签: xml django curl

如何将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但不是第一次请求)

1 个答案:

答案 0 :(得分:0)

  

为什么我可以使用第一个curl请求而不是第二个curl请求命中端点? (第二次请求需要csrf但不是第一次请求)

首先,您正在执行GET请求。对于CSRFGET请求被视为安全。

在第二步中,您正在执行POST请求。 POST请求会对您的系统产生副作用,因此必须对CSRF提供某种保护。

要解决此问题,您需要在第二个请求中提供正确的csrftoken。通常,您应该能够通过发出GET请求来获取CSRF令牌,因为您已经发出了第一个GET请求,csrftoken可能应该单独在HTTP标头或Cookie中传递。 (使用curl打印标题)

这里有关于Django CSRF

的文档