我正在使用Rails的sanitize帮助程序来清理用户的输入文本,这些文本可能被格式化为markdown。
我注意到该方法删除了tel:
链接,我想知道为什么,以及如何允许它们。
>> sanitize("<a href='http://123'>click</a>")
=> "<a href=\"http://123\">click</a>"
>> sanitize("<a href='tel:123'>click</a>")
=> "<a>click</a>"
当然,我尝试从上面链接的页面中找出它,但是无法做到这一点。我宁愿避免为该简单任务编写“洗涤器”类或任何其他类。
我也尝试过我认为意味着“允许所有href”的内容,但没有任何效果(即使在重新启动服务器之后)。
# In config/application.rb
config.action_view.sanitized_allowed_attributes = ['href']
最佳答案
在Rails 4中,Loofah用于清理HTML。要了解更多信息,请访问this链接。
Rails团队将此功能提取到单独的gem中。
如果检查this行,则Loofah::HTML5::WhiteList::ALLOWED_PROTOCOLS
的列表中没有tel
,因此已从定位标记中剥离了tel
。
解决方案:
丝瓜络:: HTML5::WhiteList::ALLOWED_PROTOCOLS.add('tel')
关于ruby-on-rails - 为什么在清理过程中删除 "tel:"链接,以及如何允许它们,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35670896/