带脚本标记的跨域cookie?

时间:2012-12-11 10:32:00

标签: javascript cookies cross-domain

我正在研究jsonP从cookie发送数据,从域A发送到域B.它运作良好,但我的问题不在这里。我只是意识到,如果我只在我的域B上放置script标记指向我的域A,则我的域A的所有cookie都在我的域B上设置。

示例:我将此标记放在我的域B上:

<script src="http://mydomainA.com/"></script>

只有这样,我的域A的所有cookie都在我的域B上设置。 我的问题是,这是正常的吗?我认为cookie需要一些黑客来跨域,但我不认为这很容易。

抱歉我的英文不好,如果我的问题很愚蠢,或者之前有人问过,请道歉。

提前致谢。

1 个答案:

答案 0 :(得分:4)

Cookie只是HTTP请求中的标头。当浏览器请求

GET /foo
Host: a.com

它会收到一个HTML文档,其中包含托管在另一个域上的<script>标记。所以它会触发另一个请求:

GET /script.js
Host: b.com
Cookie: foobarbaz

如果有的话,它肯定会为域b.com附加Cookie。这意味着上次浏览器联系b.com时,HTTP响应包含类似

的标头
...
Set-Cookie: foobarbaz
...

因此对同一域的后续请求将维护会话。当浏览器向a.com请求其他资源时,例如

GET /bar.jpeg
Host: a.com

foobarbaz 设置的Cookie b.com将不会与请求一起发送,因此a.com上的脚本无法访问来自b.com的数据。