在请求JS时没有发送cookie

时间:2010-12-02 02:42:56

标签: javascript cookies bookmarklet

问题originally posted on Webmasters,建议将其移至此处。

我托管了一个Web服务,并为我的成员提供了一个Javascript书签,它从我的服务器加载了一个JS sript。但是,客户端必须登录才能接收JS脚本。这几乎适用于所有人。但是,某些用户已知为其他人工作会有以下问题:当他们通过我的服务器的javascript bookmarklet请求脚本时,他们的cookie来自我的服务器不会包含在请求中,因此它们始终“未经过身份验证”。

我是按照以下方式提出请求的:

var myScript = eltCreate('script');
myScript.setAttribute('src','http://myserver.com/script');
document.body.appendChild(myScript);

在困惑的绝望中,我更改了脚本页面,只是在count($_COOKIE)上输出“我的cookie有[x]元素”,其中[x]是http://myserver.example.com。如果此用户子集使用在书签中编码的上述方法请求脚本,则消息显示“我的cookie具有0个元素”。当他们直接在浏览器中访问URL时,消息显示“我的cookie有7个元素”。

到底是怎么回事?!更重要的是,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我很确定这是一个隐私设置问题。受影响的浏览器可能增加了隐私设置,拒绝第三方脚本设置co​​okie。

在域名A上托管的网站上放置指向域B的IFRAME时遇到类似问题。有些浏览器拒绝我的IFRAME为它自己的域设置Cookie,因为它触发了隐私问题

您可能希望在脚本src属性中存储哈希,并让它以这种方式对用户进行身份验证。

编辑:这就是我所说的:Setting cross-domain cookies in Safari