从其他域中读取Cookie

时间:2016-03-30 20:15:52

标签: javascript jquery cookies cross-domain

我正在为公司内部的广告系列开发一个页面/表单。但是,第一步是检查此人是否已登录。这可以通过cookie(CUSTOMER)轻松检查,该Cookie在登录后设置。

然而: 1)我在本地开发,而不是在同一个域上,因此无法看到该cookie 2)最终的广告系列可能会或可能不会最终停留在实际域名上。他们最终可能会使用虚荣URL或其他东西。

出于此目的,我们假设我无法访问设置cookie的主域。

如何从域外读取该Cookie?哦,既然IT人员不让我们触及后端抱怨,那么它必须是一个JS解决方案。

谢谢!

3 个答案:

答案 0 :(得分:19)

你不能。

您可以使用客户端JavaScript阅读的唯一Cookie是属于嵌入了strerror_r的HTML文档主机的Cookie。

通过设置withCredentials,您可以在跨源请求中支持Cookie,但浏览器会透明地处理这些Cookie,并且JS无法直接访问它们(XHR规范远远超出explicitly ban getAllResponseHeaders from reading cookie related headers )。跨域请求访问cookie的唯一方法是服务器(您说您无权访问)将数据复制到正文或不同的响应头中。

答案 1 :(得分:2)

如果可以安装服务器端组件,则可以。

您可以使用专用域来托管您的Cookie,然后使用XSS技术分享它

当dom1.foo.com登录时,您使用Ajax XSS调用在cookie.foo.com上注册cookie,然后当您继续使用dom2.foo.com时,您必须使用XSS api查询cookie.foo.com

我'我们前一段时间玩过它 https://github.com/quazardous/mudoco/blob/master/mudoco/README.txt 它只是某种POC ..

答案 2 :(得分:0)

您可以通过将iframe嵌入页面中来实现此目的,其中src指向域“ with cookie”。说http://cookiedomain.com/some.html。 Some.html页面将运行访问cookie并设置一些全局变量的javascript