尝试通过 Twilio SMS 发送 GIF 时出现无效内容类型错误
Invalid-Content-Type error when trying to send GIF through Twilio SMS
我有这段代码可以发送带有 GIF 的彩信。 (使用 Ruby 和 Sinatra,托管在 Heroku 上)。
client.messages.create(
to: to,
from: phone,
body: message,
media_url: 'http://media.giphy.com/media/zl170rmVMCpEY/giphy.gif'
)
失败,Twilio 的调试控制台显示 12300 无效内容类型错误。我确定我在这里遗漏了一些简单的东西,但我不知道是什么。
您正在使用的 URL 是 returns 一种基于请求的 Accept
header 的不同类型的内容。
在 Chrome 中 "Content-Type" header 的响应为 "text/html"。考虑到 URL.
上的 .gif
后缀,这是令人惊讶的
Chrome 接受 header 看起来像:Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
但是如果我使用 curl -I http://media.giphy.com/media/zl170rmVMCpEY/giphy.gif
我会得到 Content-Type: image/gif
如果您查看 HTML 页面上的图像 URL,在 Chrome 中,它实际上是:https://i.giphy.com/zl170rmVMCpEY.webp
webp 是 gif 的替代格式,我怀疑如果浏览器支持它,它会代替 gif 提供。
如果 Twilio 支持 webp 格式的图像,您可以改用它。
Gify 似乎也使用 mp4 格式,看起来他们标榜为 gif,但实际上并不向可以接受 HTML 或 WebP 内容的客户提供 gif。
我有这段代码可以发送带有 GIF 的彩信。 (使用 Ruby 和 Sinatra,托管在 Heroku 上)。
client.messages.create(
to: to,
from: phone,
body: message,
media_url: 'http://media.giphy.com/media/zl170rmVMCpEY/giphy.gif'
)
失败,Twilio 的调试控制台显示 12300 无效内容类型错误。我确定我在这里遗漏了一些简单的东西,但我不知道是什么。
您正在使用的 URL 是 returns 一种基于请求的 Accept
header 的不同类型的内容。
在 Chrome 中 "Content-Type" header 的响应为 "text/html"。考虑到 URL.
上的.gif
后缀,这是令人惊讶的
Chrome 接受 header 看起来像:Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
但是如果我使用 curl -I http://media.giphy.com/media/zl170rmVMCpEY/giphy.gif
我会得到 Content-Type: image/gif
如果您查看 HTML 页面上的图像 URL,在 Chrome 中,它实际上是:https://i.giphy.com/zl170rmVMCpEY.webp
webp 是 gif 的替代格式,我怀疑如果浏览器支持它,它会代替 gif 提供。
如果 Twilio 支持 webp 格式的图像,您可以改用它。
Gify 似乎也使用 mp4 格式,看起来他们标榜为 gif,但实际上并不向可以接受 HTML 或 WebP 内容的客户提供 gif。