笔者最近工作上和团队其余共事解决 Spartacus 客户的 SSR 性能问题时,从 Trace 工具里发现 SSR 服务器接管到了一些 HTTP POST 申请——要晓得 SSR 通常状况下只解决 HTTP GET 申请的页面渲染。
SSR 服务器上收到了很多奇怪的流量 – 对于其店面 Storefront.com/xyzxyz 中不存在的 URL.
这些流量让 SSR 忙于渲染 404 页面。
兴许对传入的 URL 进行疾速预过滤是一个不错的抉择,以避免 NodeJS 因对不存在的 URL 进行不必要的工作而过载(这甚至能够被视为 DoS 攻打,具体取决于规模和是否无意)。
在 Angular Universal 应用程序中,解决 HTTP POST 申请是可能的,但不倡议在服务器端解决这些申请。
起因是,服务器端解决 HTTP POST 申请须要在服务端调用一个 HTTP POST 办法,这通常须要在服务端创立一个新的 HTTP 申请,而后将其发送到后端服务器以进行解决。这种解决可能会导致一些问题,例如:
- 安全性问题:如果从客户端接收数据并在服务器上解决它,可能会导致一些安全性问题,例如跨站点脚本攻打 (XSS) 或 SQL 注入攻打等。
- 带宽问题:将所有 POST 申请发送到服务器可能会导致网络流量和服务器负载的减少。
- 因而,倡议在 Angular Universal 应用程序中将 HTTP POST 申请转发到后端服务器,以便在后端服务器上进行解决。能够应用代理来将 HTTP POST 申请转发到后端服务器,例如应用 Angular 的 HttpClient,将申请发送到一个代理服务器,而后在代理服务器上将申请转发到后端服务器。
总的来说,Angular Universal 应用程序能够解决 HTTP POST 申请,但最好将这些申请转发到后端服务器进行解决,以防止安全性和性能问题。