如何在XMPP(Jabber)消息中在Web上发送图像?

时间:2010-11-16 20:21:44

标签: ruby security image xmpp xmpp4r

对于XMPP interface for the Stack Overflow chat,我目前是taking the HTML of the chat messages and converting to valid XML,并将其设置为XMPP html对象的message子元素。在我的Mac OS X jabber客户端中,这工作得很好!这意味着当SO聊天中的用户发布了一个单盒化图像时,该图像将显示在我的XMPP客户端(Adium for OS X)中:

My Mind Is Blown

但是我刚刚将Adium更新为最新版本,显然是they considered what I was doing to be a security hole and against XMPP specs, and changed that behavior。他们的理由是XMPP不应该透露你的IP地址,而通过HTTP获取图像会显示我的IP地址。

所以现在聊天对XMPP来说是无形的。如何使图像在XMPP上运行?我的XMPP组件应该下载图像并将它们嵌入<Message>节吗?可以通过XMPP服务器代理图像吗?或者这是不可能的?

3 个答案:

答案 0 :(得分:6)

Adium,iChat和Pidgin都支持XEP-0231,它允许您发送提供的二进制数据,包括用于此目的的图像。基本上,它允许您指定唯一标识符作为图像的源,然后另一个客户端可以决定是否要在<iq>请求中请求数据。

我一直在python的Twisted中使用它,但遇到了一些挫败感。我知道 Adium和iChat至少使用它来请求数据。

答案 1 :(得分:3)

尝试将其嵌入a data: uri,例如<img src="data:image/png;base64,VGhlIGltYWdlIGRhdGEgZ29lcyBoZXJlCg==" alt="some text" />

答案 2 :(得分:0)

只是一个想法......

如何解析图像URL,下载图像,将它们放入一个临时文件夹,文件名代表原始URL(文件名可能是原始URL的哈希值),并将消息中的原始URL替换为这些文件网址?

另一个想法是......拥有一个获取真实URL的本地服务器?

相关问题