我目前有一个RESTful Web服务,它通过会话识别客户端。
我有一个使用ajax/javascript访问RESTful Web服务内容的客户端。我通过使用标头响应请求来允许这种情况发生:Access-Control-Allow-Origin
、Access-Control-Allow-Credentials
、Access-Control-Allow-Methods
。
但是,尽管客户端可以访问内容的会话,但每个请求都被视为不同的会话,因为 cookie 不能跨域使用。
我不想修改我的服务器代码来专门迎合这种风格的客户端,我更喜欢围绕客户端的工作来提供使用会话的外观。
由于我不想通过会话存储任何内容,因此我只使用 jsessionid 作为客户端标识符,我认为我可以人为地将&jsessionid=
注入到 URL,至少从服务器端,使客户端看起来正确跟踪会话。
这似乎不起作用 - 有人可以建议我如何让我的客户表现得好像它使用相同的会话 ID 一样吗?
。我假设我可以人为地将 &jsessionid= 注入到 URL 中......
jsessionid
不是查询字符串参数。您希望人为地添加;jsessionid=...
(在任何 & 之前 URL 中(,而不是&jsessionid=...
.
对于背景...我制作了一个名为 kitgui.com 的产品,它允许跨域通信并模拟内容管理的页面保存,但实际上是通过iframe跨域与安全服务器进行对话。
您不必修改服务器代码。您可以使用 iframe + postMessage,假设您不需要对以下 IE8 的支持。所有其他现代浏览器都支持这一点。对于较低的浏览器,还有iframe轮询技术。您也不需要在非 SSL 上的查询字符串中公开您的会话 ID。您可以与您的iframe对话,以获取通过javascript登录或不登录的状态。会话信息保留在 iframe 的域中,位置应保留
。此链接可以帮助您 -> http://benalman.com/projects/jquery-postmessage-plugin/