首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么CURL --data-urlencode不进行URL编码

为什么CURL --data-urlencode不进行URL编码
EN

Stack Overflow用户
提问于 2019-11-15 17:38:45
回答 1查看 2.4K关注 0票数 2

我尝试使用带有--data-urlencodecurl对查询参数进行URL编码,但它们最终被附加到查询中,就像--data一样。

这个问题可以在netcat的帮助下重现,并对其进行查询。

curl POST查询示例:

代码语言:javascript
运行
复制
curl --data-urlencode "foo=bar" 127.0.0.1:8080/test/path

实际输出:

代码语言:javascript
运行
复制
$ nc -l 8080
POST /test/path HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: curl/7.58.0
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded

foo=bar

预期输出:

代码语言:javascript
运行
复制
$ nc -l 8080
POST /test/path?foo=bar HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: curl/7.58.0
Accept: */*
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-16 06:48:03

根据manual的说法,--data-urlencode选项"...posts data,类似于其他数据,-d选项“。所以,如果你看到一个帖子,这是预期的行为。

您可以使用--get让curl发出GET请求。此外,-v也是一个好朋友!

代码语言:javascript
运行
复制
curl -v --data-urlencode "foo=bar" http://127.0.0.1/test.php
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> POST /test.php HTTP/1.1
> Host: 127.0.0.1
> User-Agent: curl/7.47.0
> Accept: */*
> Content-Length: 7
> Content-Type: application/x-www-form-urlencoded

使用--get

代码语言:javascript
运行
复制
curl -v --get --data-urlencode "foo=bar" http://127.0.0.1/test.php
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET /test.php?foo=bar HTTP/1.1
> Host: 127.0.0.1
> User-Agent: curl/7.47.0
> Accept: */*
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58874140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档