@code 块中的代码是不是已编译并通过浏览器调试可见?
Posted
技术标签:
【中文标题】@code 块中的代码是不是已编译并通过浏览器调试可见?【英文标题】:Is code within the @code block compiled and visible through browser debugging?@code 块中的代码是否已编译并通过浏览器调试可见? 【发布时间】:2021-12-26 05:46:47 【问题描述】:我对 Blazor WASM 比较陌生。我用过很多次 Blazor Server,并且有大量使用 ASP.NET 的经验。
Blazor WASM 似乎分为两个独立的项目 - OOTB,一个新的项目由 ProjectName.Client 和 ProjectName.Server 产生。我希望 Server 项目下的所有内容都驻留在服务器上,因此对浏览器不可见。
我不确定客户端项目中的代码。具体来说,@code 块中的代码。我希望这些代码块在客户端浏览器上执行,但是它们对客户端可见,还是加密/隐藏/等因此不可见?
具体来说,我希望创建一个带有表单的页面,该表单提交到 HTTP 端点进行处理。当然,该表单的内容对客户端来说是显而易见的,因为他们只是填写了它,但具体来说,我想隐藏传出的 HTTP 调用。
所以,tl;博士:
-
如果我将代码放在@code 块中,客户端能否以某种方式反编译并看到它?
如果我在 @code 块中发出传出 HTTP 请求,客户端是否可以使用 Fiddler 等工具或在浏览器的“网络”选项卡中看到该请求?
可以肯定的是,如果我将代码放在服务器项目中,并且让客户端项目将请求与表单数据一起发送到服务器项目,那么来自服务器项目的传出 HTTP 请求是否会完全隐藏到客户?
【问题讨论】:
【参考方案1】:在 Blazor WASM 中,WASM 项目所需的所有代码都下载到浏览器。即将其视为公共领域代码。它需要反编译,但使用正确的工具,里面的一切都是可见的。
客户端代码对 API 的任何调用也是可见的。
API 控制器中的任何代码都是纯 ASPNetCore 服务器端代码,除非受到攻击,否则无法查看。
所以
-
是的
是的
是的
【讨论】:
太棒了。感谢您的快速回复! "在 Blazor WASM 中,WASM 项目所需的所有代码都被编译成 WASM 代码并下载到浏览器中" 你确定吗?恐怕你错了,除非他们改变了“规则”。据我所知,您的代码被编译为 .Net 程序集,而不是 WebAssembly。 技术上正确,我已经稍微更新了我的答案以反映这一点。以上是关于@code 块中的代码是不是已编译并通过浏览器调试可见?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 VS Code 终端中编译/执行/调试纯 JavaScript?