【问题标题】:Cross Domain AJAX/Javascript - Artificially using a sessionid跨域 AJAX/Javascript - 人工使用 sessionid
【发布时间】:2012-04-27 23:54:37
【问题描述】:

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

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

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

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

由于我不想通过会话存储任何内容,而是只使用 jsessionid 作为客户端标识符,我认为我可以人为地将&jsessionid= 注入 URL 以至少从服务器端创建客户端似乎正确地跟踪会话。

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

【问题讨论】:

  • @Graeme:很高兴有帮助!我已将其移至答案中。

标签: javascript ajax tomcat cross-domain


【解决方案1】:

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

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

【讨论】:

  • 值得注意的是,cookie 中的 jsessionid 值将优先于 URL 中的值。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2012-01-02
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多