我有几个API要用cURL测试。我试着做一个如下的GET:
curl --user username:password --request GET http://my_domain/get_result/52d6428f3ea9a008358ad2d8/
在服务器上,它显示了一个“302”(这意味着重定向,对吗?)。我猜它被重定向到了“login/”页面。
正确的方法是什么?
编辑:我试过:
curl -c cookies.txt -b cookies.txt -L -d @login_form.txt http://my_domain/login/
这里是登录表单。txt包含“用户名=用户名”
实际上@Paterino的答案是正确的,但它不会在每一个实现的sed工作。取而代之的se's/^.*csrfToken\s*//')
我们可以使用se's/^.*csrfToken[[:空白:]]*//')
这是更老式的。MacOSX的curl不使用转义,所以\n\t\s
根本不起作用。
在curl请求中传递用户名:密码只适用于HTTP身份验证,这不是现在大多数网站的身份验证方式。相反,您必须发布到登录页面,获取cookie,然后在请求所需页面时将其传回。
这是一个完全编码的答案。解决方案的理念是:
之后,您可以始终使用数据中的CSRF令牌($DJANGO_令牌
)或自定义的X-CSRFToken
头执行任何请求。要注销,只需删除cookies文件。
请注意,您需要一个裁判(-e
)来使Django的CSRF检查愉快。
LOGIN_URL=https://yourdjangowebsite.com/login/
YOUR_USER='username'
YOUR_PASS='password'
COOKIES=cookies.txt
CURL_BIN="curl -s -c $COOKIES -b $COOKIES -e $LOGIN_URL"
echo -n "Django Auth: get csrftoken ..."
$CURL_BIN $LOGIN_URL > /dev/null
DJANGO_TOKEN="csrfmiddlewaretoken=$(grep csrftoken $COOKIES | sed 's/^.*csrftoken\s*//')"
echo -n " perform login ..."
$CURL_BIN \
-d "$DJANGO_TOKEN&username=$YOUR_USER&password=$YOUR_PASS" \
-X POST $LOGIN_URL
echo -n " do something while logged in ..."
$CURL_BIN \
-d "$DJANGO_TOKEN&..." \
-X POST https://yourdjangowebsite.com/whatever/
echo " logout"
rm $COOKIES
我有一个稍微安全一点的代码版本,它使用一个文件来提交POST数据,作为GitHub:django csrftoken登录演示的要点。猛击
关于Django的CSRF令牌的有趣背景阅读在docs上。Django项目。通用域名格式。
问题内容: 我想使用cURL测试一些API。我尝试执行GET,如下所示: 在服务器上,它显示为“ 302”(表示重定向,对吧?)。我猜它重定向到“登录/”页面。 完成这项工作的正确方法是什么? 编辑:我试过: 其中login_form.txt包含“ username = username&password = password&this_is_the_login_form = 1”。不起作用 没有
问题内容: 我已在中注释掉了csrf处理器和中间件产品线 但是,当我使用Ajax发送请求时,Django仍然会响应“ csrf令牌不正确或丢失”,并且在将X-CSRFToken添加到标头后,请求将会成功。 这里发生了什么 ? 问题答案: 如果只需要一些视图而不使用CSRF,则可以使用@csrf_exempt:
我正在尝试使用Facebook凭据实现网站登录。当我在Facebook小部件上按“取消”或“确定”时,我会看到不同的反应。当我按Cancel时,我看到以下内容 这是可预测的。但是当我按OK时,我看到另一个错误。 我在本地运行的网站Ubuntu 14.04 apache Web服务器与80端口。我怀疑错误的Facebook应用程序设置,但不知道调试什么。 此外,我可以提到推特登录也在相同的设置下工作
问题内容: 假设我有一个模型,并且想验证是否 可以添加s个以上的代码: 但是,试图保存时, 一个 因为超过最大递归深度被抛出。 错误如下: 它发生在行中。 显然,在保存模型时,Django的复杂性根本不允许您验证m2m关系。那我该如何验证它们呢? 问题答案: 您 永远无法 使用模型的干净方法来验证关系。这是因为在清理时间,该模型可能不存在,就像您的购物篮一样。不存在的东西,也可能没有关系。 您要么
我正在构建谷歌应用程序脚本产品,当我部署GAS项目时,我只想让我的组织中的人可以访问该应用程序。当用户已经用我的组织电子邮件登录时,浏览器就可以了。但是我如何通过邮递员或终端访问部署的URL,我需要访问令牌或其他东西吗?欢迎提供任何建议! 欢迎提供任何建议!
我正在开发一个webapp,用户可以登录查看他们的在线酒窖。 我已经安装了Django REST模型,以及Angular的前端设计,但我很难将这些部分放在一起,我的主要问题是用户身份验证。 null 提前致谢