首页 > 解决方案 > curl 的 --user 和 --data 选项有什么区别?

问题描述

因此,开始时,我试图制作一个 bash 脚本来每隔 n 天登录一个网站,以绕过一个奇怪的地理封锁。

但是当我开始四处搜索并研究如何使用 curl 登录网站时,我看到了两种方法。

curl -u "foo:fooPassword" example.com

或者

curl -d "username=foo&password=fooPassword" example.com

好吧,在我的用例中,只有后者有效,但我想知道这两个选项之间有什么区别。
他们的首选用例是什么?
他们都为不同类型的身份验证做不同的事情吗?
-d 是否可以使用其他选项替换--user?或相反亦然?
在我看来,这两件事很容易在我的大脑中混合,所以我想看看这两件事之间的区别

标签: bashcurllibcurl

解决方案


--user选项设置HTTPAuthorization标头,用于 HTTP 基本身份验证。

--data选项设置将在 HTTPPOST请求正文中提交的数据。许多 Web 应用程序使用这种方法实现自己的身份验证机制,而不是依赖于 HTTP 基本身份验证,因为这允许它们对过程进行更高程度的控制(例如,基于时间的凭据到期、注销的能力等)。该--data选项可用于向远程服务器发送任意数据;它不仅限于发送用户名和密码。

这两种机制中的哪一种是必需的,完全取决于您正在与之交互的特定 Web 服务。


推荐阅读