我正在用yo + grunt + angular.js开始我的第一个项目.
我有一个需要从我的服务器读取一些数据的服务; 我使用angular $ http服务构建它.我还构建了一个RESTful Web服务(用PHP实现,但它可能是Java,C,Perl,......,无关紧要),它公开了一个API来获取数据.
grunt为我的ng-app提供服务的服务器目前(可能永远都是)运行PHP Web服务的地方(通过apache).
我想知道这是否是一个可接受的架构...我最终在同一台服务器上有两个不同的服务器(grunt和apache)...更多,我总是要添加一个"Access-Control-Allow-Origin:127.0.0.1 "到我的PHP服务的输出...... :-(
例如,可以从grunt提供PHP吗?
更新:我讲的是开发阶段...当然在制作时我不会使用grunt ...
为了更好地解释自己,我想在$ http()中使用相对的URL ...在两者中使用相同的代码开发和生产阶段...
如果在生产中我可以期望它能够工作,因为我只有一台服务器用于部署的Angular应用程序和 PHP服务,他们应该在开发时解释PHP,当Angular应用程序服务时咕噜?咕噜咕噜?如果有,怎么样?
UDPATE 2,以及一个可能的解决方案:在对这个问题进行了相当多的思考之后(也阅读了本文),并且没有在这里得到满意的答案,我决定使用这种方法:
发展
使用"类似生产"的服务器(Apache,lighttpd,...)来提供真正的PHP页面.
使用带有$ http或$ request的绝对URL来访问该服务器(不同于Grunt,它提供angular.js页面).网址将很容易配置,只需要最少的工作(和可能的错误)切换到生产.
在PHP脚本中,在生成(JSON)输出之前,始终输出正确的"Access-Control-Allow-Origin"标头; 该指令的值也很容易配置.
生产
将angular.js应用程序部署到部署PHP的同一服务器上.
更改网址,并使其相对,因为现在它们与客户端脚本共享相同的来源.
更改"Access-Control-Allow-Origin"标头,仅允许本地请求(或者可能根本删除该标头...).
如果有人想对此解决方案发表评论,提出异议或提出更好的解决方案,我将非常高兴......