- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 curl 来测试我的一个 Django 表单。我尝试过的调用(每个调用都有错误,并且为了便于阅读而跨越多行):
(1):
curl
-d "{\"email\":\"test@test.com\"}"
--header "X-CSRFToken: [triple checked value from the source code of a page I already loaded from my Django app]"
--cookie "csrftoken=[same csrf value as above]"
http://127.0.0.1:8083/registrations/register/
(带有 cookie 中的 http header 和 csrftoken
)导致 400 错误,没有返回任何数据。
(2):
curl
-d "{a:1}"
--header "X-CSRFToken:[as above]"
--cookie "csrftoken=[as above];sessionid=[from header inspection in Chrome]"
http://127.0.0.1:8083/registrations/register/
(与 (1) 中一样,但 header 属性声明中没有空格,cookie 中也有 sessionid
)导致相同的 400 错误,没有返回数据。
(3):
curl
-d "{a:1}"
--header "X-CSRFToken:[as above]"
http://127.0.0.1:8083/registrations/register/
(只有带有 X-CSRFToken
的 http header ,没有 cookie)导致错误代码 403,消息:未设置 CSRF cookie。
如何使用 curl 测试我的表单?除了 cookie 值和 http header 之外,我没有考虑哪些因素?
最佳答案
Damien 的回答和您的示例 2 的混合对我有用。我用了一个简单的登录页面来测试,我希望你的注册 View 是相似的。 Damien 的响应几乎有效,但缺少 sessionid
cookie。
我推荐一种更稳健的方法。与其手动输入来自其他请求的 cookie,不如尝试使用 curl 的内置 cookie 管理系统来模拟完整的用户交互。这样,您就可以减少犯错的机会:
$ curl -v -c cookies.txt -b cookies.txt host.com/registrations/register/
$ curl -v -c cookies.txt -b cookies.txt -d "email=user@site.com&a=1&csrfmiddlewaretoken=<token from cookies.txt>" host.com/registrations/register/
第一个 curl 模拟用户首先通过 GET 请求到达页面,并保存所有必要的 cookie。第二个 curl 模拟填写表单字段并将它们作为 POST 发送。请注意,您必须按照 Damien 的建议在 POST 数据中包含 csrfmiddlewaretoken
字段。
关于django - 如何将 curl 与 Django、csrf token 和 POST 请求一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10628275/
我是一名优秀的程序员,十分优秀!