设置是我有一个 Rails 应用程序设置作为 JSON API 和另一个我想用来调用 API 的静态 html 页面。为了争论,rails API 位于 foo.com,静态 html 页面位于 bar.com。
在 foo.com 应用程序上,我有这样的东西:
if !cookies[:foo]
cookies[:foo] = "testing #{rand(500)}"
else
logger.info(cookies[:foo])
render :json => { :cookie => cookies[:foo] }
当我尝试使用来自 bar.com 的 jquery 执行 ajax GET 请求时,cookie 不会被发送回 JSON API。
$.get('http://foo.com/', function(data){console.log(data)})
但是,如果我将页面加载为资源,我可以让 cookie 在 foo.com 和 bar.com 之间来回发送
<script type="text/javascript" src="http://foo.com"></script>
有谁知道为什么我能够在将脚本作为脚本资源加载时而不是在我执行简单的 ajax 请求时跨域来回传递 cookie?有什么办法吗?