【问题标题】:Linux curl post request and Error 417 but sudo success?Linux curl 发布请求和错误 417 但 sudo 成功?
【发布时间】:2018-01-23 08:33:53
【问题描述】:

我的服务部署在docker,暴露的nginx端口是18082;服务端口是38087,我都试过了。

当我使用命令时

curl -i -X POST -H 'content-type: text/json' -d @post.json \ http://127.0.0.1:18082/youtu/openliveapi/livedetectfour

返回 417

HTTP/1.1 417 Expectation failed
Server: squid/2.7.STABLE9
Date: Tue, 15 Aug 2017 11:57:04 GMT
Content-Type: text/html
Content-Length: 1436
X-Squid-Error: ERR_INVALID_REQ 0
X-Cache: MISS from SK-SQUIDDEV-118
X-Cache-Lookup: NONE from SK-SQUIDDEV-118:8080
Connection: close

但是当我在前面添加 sudo 时,它返回成功。 HTTP/1.1 100 继续 HTTP/1.1 200 OK 服务器:openresty/1.9.15.1

我确实搜索并知道当 curl 发布超过 1024 个字节时,它会首先发送

期望 100-continue。如果服务器不支持该请求,它将返回 417 错误。

那sudo怎么能成功,可能和nginx机制有关,我不太熟悉,谢谢。

【问题讨论】:

  • 添加一个-v,看看你是否在详细输出中发现了什么有趣的东西
  • @TarunLalwani 非常感谢...我尝试了 -v 并发现我一直在使用不支持期望 100 的公司 http_proxy ..并且通过不使用代理 sudo 成功,

标签: linux curl docker nginx


【解决方案1】:

由于您在公司设置中使用代理,并且代理可能会插入到您用户的 bash 配置文件中。你可以做 3 件事

更新 ~/.bash_profile 或 ~/.bashrc

从您的个人资料中删除代理,您将不再需要代理

取消设置变量

您可以在调用前取消设置变量

unset http_proxy
unset https_proxy
curl -i -X POST -H 'content-type: text/json' -d @post.json \ http://127.0.0.1:18082/youtu/openliveapi/livedetectfour

为调用留空变量

你可以只为那个 curl 调用设置变量

http_proxy= https_proxy= curl -i -X POST -H 'content-type: text/json' -d @post.json \ http://127.0.0.1:18082/youtu/openliveapi/livedetectfour

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 2015-12-06
    • 2022-11-29
    相关资源
    最近更新 更多