为啥 CORS 在使用 'lvh.me' 时适用于 localhost?
Posted
技术标签:
【中文标题】为啥 CORS 在使用 \'lvh.me\' 时适用于 localhost?【英文标题】:Why does CORS apply on localhost when using 'lvh.me'?为什么 CORS 在使用 'lvh.me' 时适用于 localhost? 【发布时间】:2013-08-26 13:08:33 【问题描述】:在我使用 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】:同源策略适用于整个域,甚至端口号(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 除外)【讨论】:
以上是关于为啥 CORS 在使用 'lvh.me' 时适用于 localhost?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 CORS 只用于 Javascript 而不是 PHP? [复制]