限制从家庭网络上的grunt web服务器到远程托管web服务器的http://连接的正确CORS条目是什么?

What is the correct CORS entry for limiting an http:// connection to a remote, hosted web server from a grunt web server on a home network?

本文关键字:web 服务器 连接 是什么 CORS 网络 家庭 grunt 程托管 http      更新时间:2023-09-26

我已经设置了一个远程,托管的javascript服务器(DreamFactory server http://www.dreamfactory.com/),通过REST API的响应。

在本地,我通过grunt web服务器通过$grunt serve运行Angularjs应用程序https://www.npmjs.com/package/grunt-serve

我已经在远程服务器上设置了CORS,允许'*'用于多个http://连接类型。

我的问题是我如何限制CORS配置,只允许连接从我的家,grunt web服务器?

我试图为"localhost","127.0.0.1"创建一个条目,也是我从whatismyip.com报告的家庭互联网IP,我的提供商在我ping它时为我的家庭IP列出的dns条目,我为我的家庭互联网IP创建的dyndns条目…除了"*"(允许任何站点连接),其他都不能使用。

我认为这对我来说是一个教育问题,了解CORS条目应该是什么样子,只允许来自我的家庭web服务器的连接。

这可能吗?如果是这样,我应该检查什么以及在哪里检查,以便在CORS配置中找到要清除的正确条目?

布莱恩

要工作并实际应用限制,请求连接的客户端必须支持并执行CORS。以一种奇怪的方式(从安全的角度来看),使用CORS限制访问需要一个自我监管的客户机(遵循规定的访问规则的客户机)。这适用于现代浏览器,因为它们都遵循规则,所以它通常适用于通过浏览器提供服务的应用程序。

但是,CORS访问限制不会阻止其他类型的客户端(例如任何语言的任意脚本)访问您的API。

换句话说,CORS实际上是关于由本地浏览器执行的来自网页的访问规则。听起来你的grunt/angular代码不一定是实现和执行CORS的。


如果你真的想阻止其他系统访问你的DreamFactory服务器,那么你需要在API服务器本身实现一些服务器端访问限制。

如果只有一个客户端访问它,并且该客户端使用的是非公开的"受保护"代码,那么您可以实现一个密码或某种登录凭据,并且您的一个客户端将是唯一拥有登录凭据的客户端。

如果访问总是来自一个特定的固定IP地址,您可以拒绝服务器上来自任何不在您维护的配置文件中的IP地址的连接

您无法使用CORS保护API,因此您需要在服务器上实现身份验证方案。这基本上有4个步骤。

  1. 用一些额外的访问控制语句更新服务器发送的报头。
  2. 告诉Angular允许跨域请求。
  3. 在Angular的API调用中传递凭证。
  4. 在你的web服务器或API代码中实现HTTP认证方案。

Georgi Naumov的这篇文章是一个寻找Angular和PHP实现细节的好地方。AngularJS $http, CORS和http认证