@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 块中的代码是不是已编译并通过浏览器调试可见?的主要内容,如果未能解决你的问题,请参考以下文章

调试信息是不是显示 C++/MSVC 中的代码?

是否可以在 VS Code 终端中编译/执行/调试纯 JavaScript?

如何在代码块中配置 msys2?

在 VS Code 中调试 Flutter Web 应用,无需创建 Microsoft Edge 新实例

VS Code中的调试怎么用

取代浏览器插件调试,VS Code 整合 JS 调试工具