【发布时间】:2015-02-09 00:19:03
【问题描述】:
我正在开发一种用户跟踪系统,其工作原理如下:
1) 一位站长在他的网站中添加了一个js脚本:
<script src="http://example.com/in/tracking.js"></script>
2) 当用户加载页面时,javascript 请求会返回一个 cookie 作为响应:
Set-Cookie:trackid=c1d7fde9cf87a9501cea57cedde97998;Version=1;Comment=;Domain=example.com;Path=/;Max-Age=31556926
(它基本上是一个简单的 cookie,持续 1 年)
3) tracking.js 向同一个 example.com 域发出 POST XMLHttpRequest,并传递一些参数:
theAjaxRequest.open("POST","http://example.com/in",true);
theAjaxRequest.setRequestHeader("Content-type", "multipart/form-data");
theAjaxRequest.send(parameters);
4) example.com 的后端应该读取之前设置的“trackid”cookie,但是,相反,我没有收到请求的 cookie...通过 Chrome 检查器分析 POST 请求,我注意到没有 cookie传入请求标头(而 tracking.js 的第一个 GET 请求通过 Set-Cookie 正确设置了 cookie)。
怎么会?起初我认为这可能是与同源策略有关的问题;所以我在后端 Web 服务器上启用了 CORS 标头。没有结果。因此,我尝试在 example.com 同一域下的网站上加载 tracking.js(例如 web.example.com)。反正又没有结果……
我错过了什么吗?
【问题讨论】:
标签: javascript ajax cookies xss same-origin-policy