首页 > 解决方案 > 重定向后的 cURL PUT

问题描述

由于系统限制,我有一个使用 google firebase 缩短的 url。我需要能够对它执行 curl PUT 和 GET 命令。url 缩短器最终会进行重定向,这是我认为我的问题发生的地方。我让 GET 使用 -L 标志工作。

curl -X GET -L "http://myshorturl.com/hostedfile" --output GET.csv

但是我仍然无法让 PUT 工作

curl -X PUT -L "http://myshorturl.com/hostedfile" --upload-file PUT.csv

给我一个错误

错误 405(未找到)

这似乎意味着不允许 PUT,但我知道我的端点确实允许,因为当我在不缩短 url 的情况下做同样的事情时,一切正常。

curl -X PUT -L "http://mymuchlongerurl.com/hostedfile" --upload-file PUT.csv

关于如何解决这个问题的任何想法?

标签: curlput

解决方案


不幸的是,当 PUT 和 POST 方法被请求到缩短 URL 时,会发生错误,而对于 GET 方法,请求可以使用选项正常工作-L。因此,作为使用缩短 URL 的 PUT 请求的解决方法,这个怎么样?

修改 curl 命令:

curl -X PUT -L `curl -D - "http://myshorturl.com/hostedfile" | awk '/Location/ {print $NF}'` --upload-file PUT.csv
  • curl -D - "http://myshorturl.com/hostedfile"检索重定向的信息。
    • -of-D -表示结果显示到标准输出。
  • curl -D - "http://myshorturl.com/hostedfile" | awk '/Location/ {print $NF}'检索重定向的 URL。
  • 在您的情况下,-L可能不需要修改后的 curl 命令。但我无法测试它。对此我很抱歉。

参考:

如果这不是您想要的解决方法并且这不起作用,我很抱歉。


推荐阅读