今天升级到 Ruby-1.9.3-p392 后,REXML 在尝试检索超过一定大小的 XML 响应时抛出运行时错误 - 一切正常,接收 25 条以下 XML 记录时不会抛出错误,但是一旦某个 XML 响应达到长度阈值,我收到此错误:
Error occurred while parsing request parameters.
Contents:
RuntimeError (entity expansion has grown too large):
/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/rexml/text.rb:387:in `block in unnormalize'
我意识到这在最新的 Ruby 版本中发生了变化: http ://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/
作为快速修复,我已将 的大小更改REXML::Document.entity_expansion_text_limit
为更大的数字并且错误消失了。
有没有风险较小的解决方案?