如何通过curl调用使用HTTP请求发送一个头?

我希望向我的Linux盒子上的Apache服务器发送一个头。 我怎样才能通过curl调用实现这个目的呢?

对该问题的评论 (1)
解决办法

man curl

   -H/--header <header>
          (HTTP)  Extra header to use when getting a web page. You may specify
          any number of extra headers. Note that if you should  add  a  custom
          header that has the same name as one of the internal ones curl would
          use, your externally set header will be used instead of the internal
          one.  This  allows  you  to make even trickier stuff than curl would
          normally do. You should not replace internally set  headers  without
          knowing  perfectly well what you're doing. Remove an internal header
          by giving a replacement without content on the  right  side  of  the
          colon, as in: -H "Host:".

          curl  will  make sure that each header you add/replace get sent with
          the proper end of line marker, you should thus not  add  that  as  a
          part  of the header content: do not add newlines or carriage returns
          they will only mess things up for you.

          See also the -A/--user-agent and -e/--referer options.

          This option can be used multiple times to add/replace/remove  multi-
          ple headers.

例证: #

curl --header "X-MyHeader: 123" www.google.com

你可以通过添加-v选项看到curl发送的请求。

评论(4)

GET:

含有JSON:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource

有XML:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource

张贴:

用于发布数据:

curl --data "param1=value1&param2=value2" http://hostname/resource

用于文件上传:

curl --form "fileupload=@filename.txt" http://hostname/resource

RESTful HTTP Post:

curl -X POST -d @filename http://hostname/resource

用于登录网站(auth):

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
评论(3)

PHP中。

curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue'));

或者你可以设置多个。

curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue', 'HeaderName2:HeaderValue2'));
评论(5)

GET (多个参数)。

curl -X  GET "http://localhost:3000/action?result1=gh&result2=ghk"

curl --request  GET "http://localhost:3000/action?result1=gh&result2=ghk"

curl  "http://localhost:3000/action?result1=gh&result2=ghk"

curl -i -H "Application/json" -H "Content-type: application/json"  "http://localhost:3000/action?result1=gh&result2=ghk"
评论(1)

你也可以发送多个头文件、数据(例如JSON),并指定Call方法(POST,GET)到一个CUrl调用中,就像这样。

curl -X POST(Get or whatever) \
  http://your_url.com/api/endpoint \
  -H 'Content-Type: application/json' \
  -H 'header-element1: header-data1' \
  -H 'header-element2: header-data2' \

................................................................................................................................................................................................................................................

  -d '{
  "JsonExArray": [
    {
      "json_prop": "1",
    },
    {
      "json_prop": "2",
    }
  ]
}'
评论(0)

我用邮递员。

执行任何你想做的调用。 然后,postman提供了一个方便的工具来显示curl代码。

在终端中运行它。 [![在此输入图片描述][1]][1]。

[![在此输入图像描述][2]][2]

[1]: https://i.stack.imgur.com/ByU2a.png [2]: https://i.stack.imgur.com/7jlsh.png

评论(1)

我从curl换成了[Httpie][1]。 语法是这样的

http http://myurl HeaderName:value

[1]: https://github.com/jkbrzt/httpie

评论(0)

如果您想发送您的自定义标题,您可以这样做。

curl -v -H @{'custom_header'='custom_header_value'} http://localhost:3000/action?result1=gh&result2=ghk
评论(0)