我想让用户嵌入youtube或vimeo视频在我们正在使用的Rails3应用程序的帖子中,并且现在都使用iframe。清洁助手似乎只允许您在全球范围内将标签列入白名单 - 此外,youtube的内嵌框架具有一致的类别,但vimeo不具备。只允许在降价Youtube/Vimeo iframes
你会如何去从这两个网址的白名单嵌入,但不允许他们否则?
我想让用户嵌入youtube或vimeo视频在我们正在使用的Rails3应用程序的帖子中,并且现在都使用iframe。清洁助手似乎只允许您在全球范围内将标签列入白名单 - 此外,youtube的内嵌框架具有一致的类别,但vimeo不具备。只允许在降价Youtube/Vimeo iframes
你会如何去从这两个网址的白名单嵌入,但不允许他们否则?
我不确定如何使用sanitize方法将标记列入白名单,但您始终可以通过另一种方法进行筛选,并专门使用正则表达式检查src,并且只有在匹配youtube时才写出src。
def santize_iframe(text)
text.gsub(/\<iframe(src="(.+?)")?\>(.+?)\<\/iframe\>/m) do
if $2.include? "youtube.com"
... logic to display video
else
""
end
end
end
http://github.com/rgrove/sanitize/
这是一项伟大的工程,与YouTube上的例子中嵌入允许为好。 Youtube最近更改为iframe,我向他们提交了一个“过滤器”示例:
T_YOUTUBE_IFRAME = lambda do |env|
node = env[:node]
return nil unless (env[:node_name] == 'iframe')
if node['src'] =~ /^http:\/\/www.youtube.com\/embed\//
node['src'] += "?test"
return {:node_whitelist => [node]}
end
end
你有没有想过这个?如果是这样,我很感兴趣。 – BasicObject 2011-04-09 03:16:17