使用wicked_pdf时,在Heroku中没有正确转义Highlight.js

Highlight.js not properly escaped in Heroku when using wicked_pdf

本文关键字:转义 js Highlight Heroku wicked pdf 使用      更新时间:2023-09-26

这是一个非常具体的问题,我相信我已经找到了错误的来源,但我不知道如何解决它。基本上,我正在尝试将一个应用程序部署到Heroku,允许用户以PDF格式下载他们的笔记(为此我使用了wicked_pdf gem)。PDF正在正常生成,但是当它返回时,在应该有注释的地方有一长串无意义的字符。PDF中的文本是这样开头的:

",rE:!0,sL:"javascript"}},{b:"",sL:"vbscript"} ...

并继续数页。事实证明,这段代码是我用于语法高亮显示的highlight.js库的一部分。当我深入研究上述子字符串的简化源代码时,我发现它前面有以下内容:

... ,starts:{e:"<'/script>",rE:true,sL:"javascript"} ...

,特别是 starts:{e:"<'/script>" ,它似乎被解释为一个文字结束标记,导致剩余的Javascript被呈现为文本。我想知道以前是否有人在使用heroku时遇到过这个问题,我可以采取什么措施来防止这种情况发生。

我找到了一个解决方案,如果不是这个问题的答案,就是将highlight.js的Javascript资产服务外包给cloudflare cdn。虽然这并没有回答为什么这个不正确的转义发生的最初问题,但它最终解决了我的pdf呈现问题。

话虽如此,我仍然对这个问题最初产生的原因感兴趣。