限制 AngularJS 用于一个域

Limit AngularJS use to one domain

我正在编写一个与 php api 对话的 AngularJS 应用程序。 有没有办法阻止用户直接拨打 api 电话,而无需通过位于某个特定域的 Angular 应用程序。 因此,他们必须访问 angularjs 所在的我的域,并且只能通过 Angular 应用程序调用 api。 我知道因为所有代码都是可检查的客户端。 我的应用程序有一个 public 部分,还有一个部分仅在用户登录后可用。 所以我可以在用户登录后通过 OAuth 或 JWT 轻松保护调用,但我想保护整个事情,包括不需要用户登录的 public 部分。

这真的可能吗?

谢谢!

不,最终不是。一个publicAPI是public。它接收 HTTP 请求和 returns HTTP 响应。 HTTP 请求没有上下文。您要限制的是只有当前打开您的特定网站的客户端才能向您发送这些特定的 HTTP 请求。那是无稽之谈。一个 HTTP 请求就是一个 HTTP 请求,不管客户端上当前发生了什么。

是的,您可以检查 Referer header,但这只是一个任意的 HTTP header 任何人都可以手动添加到他们的请求中。

换个角度看:如果您编写网站时未使用 Angular 和单独的数据 API,但返回了良好的旧 HTML 页面怎么办?您是否需要只有特定的人才能看到 HTML?你不能。这是胡说八道。仅仅因为您以不同方式打包数据传输并不会改变这一点。