我正在使用此设置开发一个 Web 应用程序:
Production:
frontend.myapp.com
appserver.myapp.com
auth.myapp.com
Development:
localhost:8080 (frontend)
localhost.com:3010 (appserver)
localhost.com:3011 (auth)
Frontend 是一个与 nginx 一起服务的 angularjs SPA。Appserver 是一个公开 api(用户、项目、订单...)的 Rails 应用程序。Auth 是另一个使用omniauth 处理身份验证的rails 应用程序。
在生产中,我们使用不同的子域作为虚拟主机。在开发中,我们使用不同的端口(因为在 vagrant 中更容易配置)。
一切正常,除了一件事:Angular 应用程序(前端)有时需要向身份验证服务器发出 ajax 请求,这被认为是跨域攻击,因为前端端口是 8080,身份验证端口是 3011。这个问题在生产中不存在,因为我们使用子域。
如何防止跨域错误?
一种解决方法是在开发中也使用子域。(例如,在我的主机文件中:
10.2.0.15 frontend-local.myapp.com
10.2.0.15 appserver-local.myapp.com
10.2.0.15 auth-local.myapp.com
(10.2.0.15 是我的流浪机器 ip)
我喜欢这个修复,因为我的本地设置更像是生产设置(使用子域而不是端口)。
但是在流浪重新加载后,我的客人(lucid32)机器的ip会改变,我需要再次编辑我的主机文件......
而且我还没有找到一种方法来告诉 vagrant 分配静态 IP ......
有什么建议么?