我正在使用“curl -L --post302 -request PUT --data-binary @file”将文件发布到重定向地址。目前重定向不是可选的,因为它将允许签名的 header 和新的目的地。 GET 版本运行良好。特定文件大小阈值下的 PUT 版本也适用。我需要一种方法让 PUT 允许自己被重定向,而不是在第一次请求时发送文件(到 redirectorURL),然后只在 POST 被重定向到新的 URL 时才发送文件。换句话说,我不想将同一个文件传输两次。这可能吗?根据 RFC(https://www.rfc-editor.org/rfc/rfc2616#section-8.2),服务器似乎可以发送 100“具有未声明的等待 100(继续)状态,仅适用于 HTTP/1.1 请求,客户端不要求发送其有效负载”所以我'我的请求可能会被服务器阻止。有没有办法通过一个 curl 调用来解决这个问题?如果不是,两个 curl 调用?
最佳答案
尝试使用 curl -L -T file $URL
作为 PUT 该文件的更“正确”方式。 (我经常重复:-X
和 --request
应该尽可能避免,它们会导致痛苦。)
在这种情况下,curl 将单独使用“Expect: 100”,但您也可能了解到服务器普遍不关心支持它,所以它很可能最终还是不得不 PUT 两次。 .
关于http - 在不发送第一个 POST 的情况下 curl 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626181/