1

为了更好地说明我的问题,问题可能是:

我可以从 JSONP 请求发起会话吗?

更详细:假设从我的浏览器向 myserver.com 发出 JSONP 请求。myserver.com 是否可以通过 JSONP 响应设置 cookie,以便稍后再次向 myserver.com 发出请求时(直接当 doc.host = myserver.com 或间接通过来自任意 doc.host 的另一个 JSONP 请求)那些cookies会发送给它吗?目前,浏览器似乎忽略了我使用 JSONP 响应发送的 cookie。我想要的可能吗?我在这里想念什么?

编辑:这是我做的请求,通过一个虚拟的本地 html 加载本地 js 文件,该 html 只获取最新的 jquery 并加载 js 文件:

$.ajax({
  url: "http://my-remote-server/jsonp/service/test",
  dataType: 'jsonp',
  data: {some:'data'},
  success:   function(responseData)
            {console.log(responseData);}
    });

上述 JSONP 请求的响应,是设置一个 cookie。由于 chrome 报告了这一点,这一点得到了证实。问题是,如果我只是重新执行上述第二次,之前设置的 cookie 不会发送回服务器。

编辑 2:我去了 Chrome cookie 浏览器(在幕后页面中),但我找不到 cookie,尽管在 JSONP 响应中收到报告(chr​​ome 的调试控制台)。这意味着服务器发送它,浏览器看到它然后将其丢弃。

4

2 回答 2

3

我找到了解决方案,这里有一些对于处理这个问题的人来说可能很有趣的信息:

从维基百科定义:

第三方 cookie 是使用与地址栏上显示的域不同的域设置的 cookie

如果我没记错的话,这使得 99.99% 的所有 JSONP 设置的 cookie 都是第三方 cookie。在我的情况下,地址栏上显示的地址是file://,这使我的 cookie 成为第三方的。

一旦我启用了第三方 cookie,它就起作用了。

附带说明一下,Chrome 默认情况下不支持 file:// 页面上的 cookie,并且不会对此发出警告或通知。它引起了一些麻烦。有关详细信息,请参见此处此处

于 2012-05-26T12:05:18.680 回答
1

是的。动态图像请求和 CSS 请求等也可以。如果是 XHR 请求,您甚至可以读取响应标头(Set-Cookie 等)。

现在如何忽略 cookie?你怎么知道?

于 2012-05-26T01:32:09.303 回答