关于在Java应用程序中执行javascript post进程的问题
传统上,我们总是在响应中使用xml,该响应由Javascript方法解析以执行后期处理。我提出了一个新的、更简单的实现,它使用requestAttribute设置的隐藏输入,并在ajax回调中执行 JSP: SERVLET代码:关于在Java应用程序中执行javascript post进程的问题,java,javascript,prototype,yui,Java,Javascript,Prototype,Yui,传统上,我们总是在响应中使用xml,该响应由Javascript方法解析以执行后期处理。我提出了一个新的、更简单的实现,它使用requestAttribute设置的隐藏输入,并在ajax回调中执行 JSP: SERVLET代码: request.setAttribute("jsPostProcess", jsPostProcess); 它工作得很好,而且无论功能多么简单或复杂,向几乎任何调用添加js post进程都要简单得多。无需自定义js方法进行解析 好奇是否有人能发现它的任何潜在问题(如安
request.setAttribute("jsPostProcess", jsPostProcess);
它工作得很好,而且无论功能多么简单或复杂,向几乎任何调用添加js post进程都要简单得多。无需自定义js方法进行解析
好奇是否有人能发现它的任何潜在问题(如安全问题?)或对其他替代方案提出任何建议。我们目前在前端使用Prototype和YUI 2。首先,不需要令人不快的scriptlet代码:
<c:if test='${not empty jsPostProcess}'>
<input type='hidden' id='jsPostProcess' name='jsPostProcess' value='${jsPostProcess}'>
</c:if>
因为“type”属性是“text/plain”,浏览器不会尝试执行该代码,并且您可以随时获取
元素的“text”。首先,不需要不愉快的scriptlet代码:
<c:if test='${not empty jsPostProcess}'>
<input type='hidden' id='jsPostProcess' name='jsPostProcess' value='${jsPostProcess}'>
</c:if>
由于“type”属性是“text/plain”,浏览器不会尝试执行该代码,您可以随时获取
元素的“text”。感谢您的响应!!一旦我重新阅读了你的文章几次,我就把它都做好了(尽管我之前的评论是我编辑的lol!!)。非常好的建议。非常感谢!“仅仅对这样的值调用eval()似乎有点危险,尽管你可能很清楚它将是什么。”我也这么想,但我想不出任何方法可以恶意使用它,因为后处理几乎都是标准事件,不允许任何“黑客能力”而不是用户通常可能做到的。但我不是js安全问题专家!!;)只要这些东西没有任何用户提供的内容,你就可以了。如果有,那么也有一些方法可以保护你自己。谢谢你的回复!!一旦我重新阅读了你的文章几次,我就把它都做好了(尽管我之前的评论是我编辑的lol!!)。非常好的建议。非常感谢!“仅仅对这样的值调用eval()似乎有点危险,尽管你可能很清楚它将是什么。”我也这么想,但我想不出任何方法可以恶意使用它,因为后处理几乎都是标准事件,不允许任何“黑客能力”而不是用户通常可能做到的。但我不是js安全问题专家!!;)只要这些东西没有任何用户提供的内容,你就可以了。如果有,那么也有一些方法来保护你自己。
<c:if test='${not empty jsPostProcess}'>
<input type='hidden' id='jsPostProcess' name='jsPostProcess' value='${jsPostProcess}'>
</c:if>
<script id='jsPostProcess' type='text/plain'>
${jsPostProcess}
</script>