Die Kommunikation läuft vermutlich eher so:
Client --> "Gib mir mal die index.html" --> Webserver
Webserver --> "Hier haste das Zeug" --> Client
Client (wertet index.html aus) --> "Ah, ich brauch noch diese Images, dieses CSS und das Javascript da" --> Webserver
Webserver --> "Hier haste das Zeug" --> Client
Angular-App im Client/Browser --> "Ich brauch Daten" --> Direkt an REST-Server
Sonst würde der Rest-Server ja auch nicht die
IP des Client bekommen.
Im Prinzip kann jeder, der die Adresse des REST-Servers kennt, Anfragen da hin schicken. Das kann die Angular-App im Client/Browser sein, aber das kann auch ein Angreifer sein, der die App mal angesehen hat.
Und selbst wenn du die Requests gegen Deine
API durch eine Middleware auf dem Webserver durchschleusen würdest, (dann würde der Datasnap-Server die
IP des Webservers zeigen) dann könnte trotzdem jeder beliebige Angreifer die
API-Endpunkte auf diesem Webserver anrufen und würde mit der
IP des Webservers auf Deiner
API ankommen.
Für die Absicherung von Webservices ("Zugangskontrolle"), so dass nur erlaubte Clients darauf zugreifen können, gibt es in der zwischenzeit gute und sichere Protokolle, z.B. OAuth (bzw. besser OAuth 2).
Dabei holt sich der Client (also Deine Angular-App) ein Token vom einem Security Token Server (STS). Der STS stellt sicher, dass nur valide Clients das Token bekommen. Zum Beispiel muss der Client zum einen als Referrer direkt von Deiner Webseite kommen, ein spezielles Secret vorweisen und er wird auch nur dorthin mit dem Token zurückgeschickt.
Dieses Token schickt er dann bei Requests gegen Deine
API mit (z.B. im Authorization Header als Bearer Token) und deine
API validiert das Token (wurde es mit dem richtigen Key vom STS signiert?) und nur wenn das der Fall ist sollte Deine
API den Request beantworten.