如何使用cURL从文件中读取标头? [英] How to read headers from file using cURL?

查看:96
本文介绍了如何使用cURL从文件中读取标头?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现了这个

我写了这个变体:

#!/bin/bash
while read line ; do
  headers="$headers -H '$line'"
done < public/headers.txt
echo $headers
curl -X PUT \
     $headers \
     -d @'public/example.json' \
     echo.httpkit.com

headers.txt 我有

X-PAYPAL-SECURITY-USERID:123
X-PAYPAL-SECURITY-PASSWORD:123

但是当我运行 ./ public / curl.sh 我没有收到要发送的标头。

But when I run ./public/curl.sh I am not getting the headers I am sending.

我用env var隔离了该问题:

I isolated the issue with an env var:

$ x='-H some:asd'
$ curl $x echo.httpkit.com
=> header was NOT present
$ curl -H 'some:asd' echo.httpkit.com
=> header was present
$ curl -H some:asd echo.httpkit.com
=> header was present

如何在标头部分正确插入变量?

How can I correctly insert a variable in the header section?

推荐答案

让我们问 shellcheck

In yourscript line 3:
  headers="$headers -H '$line'"
                       ^-- SC2089: Quotes/backslashes will be treated literally. 
                                   Use an array.

好,那么我们这样做:

#!/bin/bash
while read line ; do
headers=("${headers[@]}" -H "$line")
done < public/headers.txt
echo "${headers[@]}"
curl -X PUT \
   "${headers[@]}" \
   -d @'public/example.json' \
   echo.httpkit.com

结果:

{
  "method": "PUT",
  "uri": "/",
  "path": {
    "name": "/",
    "query": "",
    "params": {}
  },
  "headers": {
    "host": "echo.httpkit.com",
    "user-agent": "curl/7.35.0",
    "accept": "*/*",
    "x-paypal-security-userid": "123",      //      <----- Yay!!
    "x-paypal-security-password": "123",
    "content-length": "32",
    "content-type": "application/x-www-form-urlencoded"
  },
  "body": "\"This is text from example.json\"",
  "ip": "127.0.0.1",
  "powered-by": "http://httpkit.com",
  "docs": "http://httpkit.com/echo"
}

这篇关于如何使用cURL从文件中读取标头?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆