如何解决应该允许的漂白剂剥离方式
我有以下字符串:
html = '<div id="cover" style="display: block; height: 682px"><div class="cover-desktop hidden-xs" style="background-image: linear-gradient(rgba(0,0.45),rgba(0,0.45)),url(\'/site_media/covers/cover.jpg\')"></div></div>'
这些是我的选择:
ALLOWED_TAGS = bleach.sanitizer.ALLOWED_TAGS + [
'p','div','table','br','style'
]
ALLOWED_STYLES = ['display','height','background-image']
ALLOWED_ATTRIBUTES = {
'*': ['id','class','style']
}
但是,当运行 bleach.clean
时,background-image
样式被剥离:
cleaned_html = bleach.clean(html,tags=ALLOWED_TAGS,styles=ALLOWED_STYLES,attributes=ALLOWED_ATTRIBUTES)
输出:
u'<div id="cover" style="display: block; height: 682px;"><div class="cover-desktop hidden-xs" style=""></div></div>'
为什么?我该如何解决?
事实上,我怎么能允许任何样式? '*'
不能解决问题。
编辑:原来是因为背景图片url()
。如果规则包含 url
,它就会被剥离。这是他们在 BleachSanitizerFilter.sanitize_css
中的代码:
# Drop any url values before we do anything else
style = re.compile(r"url\s*\(\s*[^\s)]+?\s*\)\s*").sub(" ",style)
那么我应该如何允许 background-image
属性?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。