我正在尝试使用curl
和--data-urlencode
对--data
进行URL编码,但是最终却像curl
一样将它们附加到查询中。
可以在netcat的帮助下并针对它进行查询来重现该问题。
示例curl --data-urlencode "foo=bar" 127.0.0.1:8080/test/path
POST查询:
$ 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
实际输出:
$ nc -l 8080
POST /test/path?foo=bar HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: curl/7.58.0
Accept: */*
预期输出:
"styles": [
"src/styles.scss",
"node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"scripts": [
"node_modules/jquery/dist/jquery.slim.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js",
"node_modules/popper.js/dist/umd/popper.min.js"
],
答案 0 :(得分:1)
根据manual,--data-urlencode
选项“ ...发布数据,类似于其他-d,--data选项”。因此,如果您看到帖子,那就是预期的行为。
您可以使用--get
来使curl发出GET请求。另外,-v
是一个好朋友!
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
:
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: */*