gpt4 book ai didi

bash - 从脚本调用时,curl 返回 HTTP 代码 503

转载 作者:行者123 更新时间:2023-12-02 08:33:01 24 4
gpt4 key购买 nike

我尝试调用一些 REST API 并使用 curl 获取生成的 HTTP 代码。如果在终端中输入:

curl -s -o /dev/null -I -w '%{http_code}' -X POST 'http://localhost/gitlab/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0'

它有效并返回 HTTP 代码 201(“已创建”)。现在我尝试在 bash 脚本中使用此命令,用变量替换 url 的一部分:

echo "Enter base URL :"
read gitlab_url # Here I type 'http://localhost/gitlab', to generate the same URL as in first code snippet
code_status=$(curl -s -o /dev/null -I -w '%{http_code}' -X POST '$gitlab_url/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0')
echo "$code_status"

然后它返回 HTTP 代码 503(“服务不可用”)。要查看“硬编码”URL 与生成的 URL 之间是否存在任何差异,我会这样做:

echo "curl -s -o /dev/null -I -w '%{http_code}' -X POST '$gitlab_url/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0'"
# Output :
curl -s -o /dev/null -I -w '%{http_code}' -X POST 'http://localhost/gitlab/api/v3/projects?private_token=my_private_token&name=blabla' 'Content-Length: 0'

如果我直接在终端中执行它,它会工作并返回给我 201。那么:如果我在脚本中使用它,为什么这个命令会失败?有什么我错过的吗?

最佳答案

这是一个代理问题。如果我使用 curl -v .... 我可以看到以下输出:

当在终端中直接输入 curl 时,我有:

* About to connect() to localhost port 80 (#0)
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)

当我将它用于 bash 脚本时,我得到:

* About to connect() to proxy proxy.my.company port xxx (#0)
* Trying xx.xx.xx.xx... connected
* Connected to proxy.my.company (xx.xx.xx.xx) port xxx (#0)

为了解决这个问题,我在脚本的顶部添加了这个:

export no_proxy=localhost,127.0.0.1
export http_proxy=""

我很惊讶必须这样做,因为我已经有一个环境变量 no_proxy 已经引用了 localhost127.0.0.1

关于bash - 从脚本调用时,curl 返回 HTTP 代码 503,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com