将带有 --form-string 的 curl 命令转换为 URL

Posted

技术标签:

【中文标题】将带有 --form-string 的 curl 命令转换为 URL【英文标题】:Convert curl command with --form-string to a URL 【发布时间】:2022-01-06 02:39:17 【问题描述】:

我有命令(为了便于阅读,在命令行参数之间添加了换行符):

curl
    -s
    --form-string "token=AppToken"
    --form-string "user=UserToken"
    --form-string "message=Msg"
    --form-string "title=Title" 
    https://api.pushover.net/1/messages.json

你能告诉我这个命令是否可以转换成 URL 链接吗?

【问题讨论】:

我投票结束这个问题,因为它不是一个编程问题。相反,它是关于将命令行转换为 URL。 【参考方案1】:

你能告诉我这个命令是否可以转换成url链接吗?

不能

curl 命令适用于带有application/x-www-form-urlencoded 请求正文的POST。 “链接”始终GET 请求,而不是POST 请求。 html 和网络中的 <a href="#"> 链接只能在没有请求正文的情况下发出 GET 请求(至少,在没有自定义 javascript 拦截的情况下不能)。 在桌面软件框架和工具包(具有内置超链接小部件)中,我发现(根据我的个人经验)它们的设计相似,假设它们将用于打开网页的 URL因此将 URL 传递给用户的默认浏览器,该浏览器只会发出 GET 请求。 这是因为跟随链接(即执行GET 请求)must always be "safe"(即GET 请求不应改变资源状态)。 此外,“链接”不能有请求正文。 虽然GET 请求can (technically) have a request-body,但对此的支持并不广泛;显然,超链接 GET 请求的单个 URI 没有与之关联的任何请求正文数据。 GET 请求正文旨在允许用户代理发出 GET 请求,其关联的请求/查询数据太长而无法放入 URI 的查询字符串(由于常见的 1024 或 2048字符限制)。

【讨论】:

许多 URL 同时支持 GETPOST,看起来值得尝试将其作为 GET 请求。 @StephenOstermiller 无论您是否可以从自定义客户端或 JS 代码或 HTML <form> 向 URI 发出 POST 请求,都与以下事实无关:超链接(OP 用语中的“链接”)只能发起无主体的GET 请求。

以上是关于将带有 --form-string 的 curl 命令转换为 URL的主要内容,如果未能解决你的问题,请参考以下文章

将带有嵌入式凭据 URL 的 cURL 请求转换为获取请求 [重复]

发送带有 http 标头的 curl 请求

如何通过 PHP 发送带有 pem 证书的 curl 请求?

发送带有 C# 错误 403 的文件和数据。CURL 没有错误

带有 CURL 的 HTTP2 给出“不支持的协议”

无法让 MailChimp 使用带有 Curl 的 API 保存我的数据