将带有 --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 同时支持GET
和 POST
,看起来值得尝试将其作为 GET
请求。
@StephenOstermiller 无论您是否可以从自定义客户端或 JS 代码或 HTML <form>
向 URI 发出 POST
请求,都与以下事实无关:超链接(OP 用语中的“链接”)只能发起无主体的GET
请求。以上是关于将带有 --form-string 的 curl 命令转换为 URL的主要内容,如果未能解决你的问题,请参考以下文章
将带有嵌入式凭据 URL 的 cURL 请求转换为获取请求 [重复]
如何通过 PHP 发送带有 pem 证书的 curl 请求?