http - 将二进制数据用于 HTTP POST 请求有好处吗?

标签 http curl web

假设我有一个 HTTP POST 方法,它简单地回显请求的主体,我像这样 curl 它:

curl -X POST -d "test non-binary data" "https://endpoint/path/to/resource"

正如预期的那样,这将导致以下回调:

"test non-binary data"

现在假设我改为像这样以二进制形式传递此数据:

curl -X POST --data-binary "test binary data" "https://endpoint/path/to/resource"

这将给我以下内容:

"dGVzdCBiaW5hcnkgZGF0YQ=="

但我可以让我的 API 解码 base64 数据并将其解释为 ASCII 以返回以下内容:

"test binary data"

正如预期的那样,这与非二进制请求相同。那么,在结果相同的情况下,传递二进制请求主体与传递非二进制请求主体之间到底有什么区别?使用二进制数据有什么好处吗?如果是这样,当我想改用二进制数据时,有哪些示例?

最佳答案

根据curl man page :

--data-binary

(HTTP) This posts data exactly as specified with no extra processing whatsoever.

If you start the data with the letter @, the rest should be a filename. Data is posted in a similar manner as -d, --data does, except that newlines and carriage returns are preserved and conversions are never done.

If this option is used several times, the ones following the first will append data as described in -d, --data.

您不应使用 --data-binary 选项接收 base64 编码数据。如果你这样做,它与 curl 无关。

直奔问题 - 我看到的唯一好处是 curl 不会处理传递的数据。如果您需要保留换行符等,那么使用它是有意义的。

关于http - 将二进制数据用于 HTTP POST 请求有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45337203/

相关文章:

objective-c - AFNetworking 中的 registerHTTPOperationClass 实际上做了什么?

authentication - 没有密码的NTLM代理?

php - 为什么 Apache 支持 PHP、Perl、Python... 但不支持 Servlet?

mysql - 用于只读网站的 SQLite 或 MySQL?

php - 如何在组件中保持页眉和页脚相同,内容将发生变化

http - 如何使用SRV记录指向80以外的端口

html - 如何在 Windows 10 中使用 Telnet 连接到网站?

javascript - 哪个 Http 错误/状态代码是合适的?

ssl - Traefik TLS 证书导致 curl 出现 "unknown CA"错误,适用于浏览器

c# - .NET Core 2.2 HttpClient/WebClient vs Curl - .NET 库对于某些服务器来说非常慢