2

我目前有一个 RESTful 网络服务,它通过它的会话识别客户端。

我有一个客户端,它使用 ajax/javascript 来访问 RESTful 网络服务的内容。我通过使用标题响应请求来允许这种情况发生:Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Allow-Methods.

但是,尽管客户端可以访问内容,但每个请求都被视为不同的会话,因为 cookie 不能跨域使用。

我不想修改我的服务器代码来专门迎合这种风格的客户端,我更喜欢在客户端周围工作以提供使用会话的外观。

因为我不想通过会话存储任何东西,所以我只使用 jsessionid 作为客户端标识符,我认为我可以人为地注入&jsessionid=到 URL 中,至少从服务器端,使客户端看起来正确地跟踪的会议。

这似乎不起作用 - 有人可以建议我如何让我的客户表现得好像它正在使用相同的 sessionid?

4

2 回答 2

2

...我以为我可以人为地将 &jsessionid= 注入到 URL ...

jsessionid不是查询字符串参数。您想要人为添加;jsessionid=...(在 URL 中的任何 & 之前),而不是&jsessionid=....

于 2012-04-27T15:54:37.497 回答
0

作为背景...我制作了一个名为 kitgui.com 的产品,它允许跨域通信并模拟内容管理的页面保存,但实际上是通过 iframe 与安全服务器进行跨域通信。

您不必修改服务器代码。假设您不需要 IE8 以下的支持,您可以使用 iframe + postMessage。所有其他现代浏览器都支持这一点。对于较低的浏览器,还有 iframe 轮询技术。您也不需要在非 SSL 上的查询字符串中公开您的会话 ID。您可以通过 javascript 与您的 iframe 交谈以获取登录或未登录的状态。会话信息保留在 iframe 的域中它应该在的位置。

这个链接可以帮助你-> http://benalman.com/projects/jquery-postmessage-plugin/

于 2012-04-27T15:28:39.380 回答