我的设置如下
- 在 /myApp/mainServlet/ 下可访问的主应用程序 servlet
- 一个“手工制作”的小肥皂代理,为来自客户端的肥皂调用添加安全标头(用户名、密码)
- 一个与主 servlet 对话(通过 BlazeDS 接口)的 Flex 客户端,并通过这个soap代理向第三方发送一些soap调用
flex 客户端有一个会话 id,它在它第一次与主 servlet 对话时设置,它返回一个 HTTP 标头,例如“Set-Cookie:”JSESSION:something; Path=/myApp”。然后这个 cookie 被发送到服务器,以告知客户端关联到哪个会话。
问题是小肥皂代理还返回一个带有会话 id 的 cookie(对于通过它进行的每个调用)——然后 Flex 客户端在与主 servlet 通信时使用这些 cookie。这些其他会话 ID 对它来说是未知的,然后当然没有任何作用......
我不希望从soap代理返回会话cookie,并且我已经验证通过告诉Apache前端剥离来自soap代理的所有“Set-Cookie”标头来解决问题。不幸的是(由于一些设置限制),这不是我可以投入生产的方式,所以我需要以编程方式修复它。
如何使 servlet 不尝试设置任何会话 ID?我相信我已经看到了告诉 Jetty(应用程序服务器)不要发送会话 id 的方法,但这也会影响主 servlet 这样做的能力,并且也不可移植。
代理 servlet 是一个非常基本的 Spring Controller(只是实现接口),所以基本上只是一个简单的 servlet。