不要在 cURL 中发送任何 Content-type 标头

Posted

技术标签:

【中文标题】不要在 cURL 中发送任何 Content-type 标头【英文标题】:Do not send any Content-type header in cURL 【发布时间】:2014-09-08 00:15:50 【问题描述】:

我正在尝试将我的 cURL 请求的内容类型标头设置为 null。 由于某种原因,我尝试使用的 API 不允许 Content-Type。 如果我确实给出了一个内容类型,我会得到一个 415 响应。

但似乎 cURL 总是发送一个 Content-Type。即使我没有设置一个。

我试过了:

curl_setopt($request, CURLOPT_HTTPHEADER, array());

curl_setopt($request, CURLOPT_HTTPHEADER, array(
    'Content-type: null'));

curl_setopt($request, CURLOPT_HTTPHEADER, array(
    'Content-type: ""',

));

但没有任何效果。

有人知道吗?

谢谢!

【问题讨论】:

'Content-type' 标头仅包含在 POST/PUT 请求中,即当您将数据发送到远程服务器时。否则它不应该包含在标题中 不指定空内容类型,你不能向 API 发送它所期望的东西吗? 它期望不设置内容类型。 【参考方案1】:

好的,因此您无法发送没有内容类型标头的 cURL 请求。这是简短的答案。 这是不可能的。

如果你不自己设置,它会将内容类型设置为

text/html

我正在尝试发送文件。最后发现这个特定API的content-type应该设置为:

application/octet-stream

【讨论】:

以上是关于不要在 cURL 中发送任何 Content-type 标头的主要内容,如果未能解决你的问题,请参考以下文章

使用 swift 在 Alamofire 中使用 CURL 命令

将 cURL 命令转换为 http put 请求

cURL - 构造请求以验证服务器发送的事件

发送带有 http 标头的 curl 请求

Echo curl 请求标题和正文而不发送它?

如何在不使用服务器端缓存的情况下调用 cURL?