在Google应用脚本文档中,有一个关于服务器端私有功能的页面。这应该说明没有私有函数,服务器代码可以从用户浏览器中看到。 谁能解释一下如何在浏览器中看到这样的服务器端功能? 感谢
请参阅:https://developers.google.com/apps-script/guides/html/communication#private_functions
答案 0 :(得分:5)
服务器代码永远不会在用户的浏览器上显示,只能看到函数名称。私有函数会隐藏这些名称,但更重要的是它们会从前端删除直接调用它们的能力。
换句话说,私有函数允许您定义后端入口点,防止恶意用户绕过您可能拥有的某些检查并直接调用“内部”函数。
为了展示查看名称并调用任何非私有后端函数是多么容易,我已经在我们检查google.script.run
对象的地方设置了这个示例:
function myFunction() {}
function anotherFunction() {}
function privateFunction_() {}
function doGet() {
return HtmlService.createHtmlOutput(
'<p id="output"></p>'+
"<script>var s = ''; for( var prop in google.script.run ) s+=prop+'<br>';"+
"document.getElementById('output').innerHTML = s;</script>"
);
}
这是发布的示例: https://script.google.com/macros/s/AKfycbzk0d03iB1O3vVYVD_U7eONM357iOPlAn7RFxAeZKx34q1Ones/exec
及其源代码(与上面相同): https://script.google.com/d/1WMY5jWblGl8U84WvVU_mZjHDg-6rGOoOPnKMF6m2bS_V-2g6IChBVDrg/edit
- 解决评论中的问题
doGet
函数不能设为私有,因为其名称是固定/预定义的。但这不是一个真正的问题,因为这个函数应该是一个入口点,因为你希望它可以从用户的浏览器中调用,并且可以相应地进行参数检查等。