使用'lvh.me'时,为什么CORS适用于localhost?

时间:2013-08-23 13:00:47

标签: ruby-on-rails ajax nginx cross-domain cors

在使用rack-cors(https://github.com/cyu/rack-cors)之前,我在Rails应用程序和我的JS前端应用程序中遇到了CORS问题。

JS前端应用程序将成为我的Rails应用程序的子域。所以我不应该在制作中遇到这个问题。但是在本地,我在服务器上运行我的前端应用程序:

python -m SimpleHTTPServer

然后我通过http://dashboard.lvh.me:8000访问它。所有调用都发送到后端rails应用程序api.lvh.me:3000

在不处理CORS的情况下执行请求时,出现CORS错误。当两者位于同一子域(lvh.me)时,为什么会出现CORS错误?这种情况发生在所有浏览器中。

为什么我需要使用rack-cors?这也会在生产中发生吗?现在,我正在运行rails s。当使用nginx时,如果它们位于同一个域,但是不同的子域,这会消失吗?

1 个答案:

答案 0 :(得分:1)

相同的原始策略适用于整个域,甚至是端口号(IE中除外)。从dashboard.lv.me:8000向api.lv.me:3000发送请求是跨源请求。实际上,这些也是跨源调用:

  • dashboard.lv.me:8000 - > ap.lv.me:8000
  • ap.lv.me:8000 - > ap.lv.me:3000(IE中除外)