Session 如何让Safari使用cookie存储的会话id?

Session 如何让Safari使用cookie存储的会话id?,session,cookies,safari,Session,Cookies,Safari,我有一个基于J2EE/JSF的web应用程序。 它包括一个表单输入、一个文本显示和一个通过谷歌可视化API和一个自定义servlet数据源呈现的可视化 该页面在一个我最多只能部分控制的页面中呈现 在Chrome、Firefox上,该应用程序运行良好。它们接受JSF生成的会话cookie,并随每个请求将会话id返回给服务器。 在IE上,我们不得不拨弄一下,但总的来说,它也能工作 但是,在Safari 5.1.2/Windows XP上,会话id作为非标准URL参数发送;jsessionid=。。。

我有一个基于J2EE/JSF的web应用程序。 它包括一个表单输入、一个文本显示和一个通过谷歌可视化API和一个自定义servlet数据源呈现的可视化

该页面在一个我最多只能部分控制的页面中呈现

在Chrome、Firefox上,该应用程序运行良好。它们接受JSF生成的会话cookie,并随每个请求将会话id返回给服务器。 在IE上,我们不得不拨弄一下,但总的来说,它也能工作

但是,在Safari 5.1.2/Windows XP上,会话id作为非标准URL参数发送;jsessionid=。。。。因此,对servlet数据源的查询不包括会话id,并且为对数据源的每个请求创建一个新会话

这会导致可视化停留在初始状态

我怀疑原因在于浏览器的不同JavaScript引擎,但这种怀疑毫无用处

我是否可以让Safari将会话ID添加到所有请求中?更好的是,我能让它以某种方式对所有请求使用cookie吗

更新:我试图将会话id附加到Google的查询对象执行的调用中,但失败了。 这样叫的时候

new google.visualization.Query('chartdata?randomBitToBypassCaching='+random+";jsessionid="+jsessionid);
请求的URL是

http://localhost:8083/myapp/chartdata?randomBitToBypassCaching=1327312516149;jsessionid=9fdb20a75d30f000c063317997b5&tqx=reqId%3A0
请注意,查询将tqx参数附加到URL,这使我传输ID的尝试无效


更新2:在URL中传输jsessionid的推荐方法是将其添加到参数之前。

最后,我将会话id作为URL参数传输,并实现了一个Servlet过滤器,该过滤器使用标准符号重定向请求;jsessionid=

不幸的是,仅将会话id附加到查询字符串(在任何其他参数之前)不起作用:

new google.visualization.Query('chartdata;jsessionid="+jsessionid?randomBitToBypassCaching='+random+");