论坛首页 Java企业应用论坛

跨域访问时Session丢失

浏览 72951 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-11  
lovingprince 写道
根据偶的经验,有一点要说一下楼主,你的设计思路就有问题。
第一、你这个相当于是不同的站点,你要共享session难度是何其大?如果系统一复杂,估计出错几率异常高,这种方式不可取
第二、你如此设计你的系统间的耦合度大大增加,支付和商品耦合,你看看淘宝和支付宝以前也是耦合的,现在分开了。

他们根本就是2个不同的应用,你应该将支付系统独立出来,设计时,A假设是购买商品的系统,B假设是支付系统,你购买了商品之后需要到B上支付,你可以通过加密的方式传递数据,并且通过业务事务的方式来完成,这样耦合性也就降低了,重用性也高了。

注:所谓业务事务,是指和传统的事务的ACID有一定区别,业务事务只需要最终的状态保持一致即可。不必强求同一时刻一定要一致。具体做法可以参考偶的博客:http://blog.csdn.net/lovingprince/archive/2008/08/21/2807986.aspx


您说的很对,我一开始考虑问题的方向就不对。
购物站的购物车只有在CHECK OUT时才会持久化进DB。而支付站需要与购物站保持一致的,就是在完成支付后清空掉购物站的Session中的购物车信息。只要保证这两步同步就行了。


stefenjun 写道
米不同不能用跨域使用COOKIE。
你文中说到AJAX发送请求,是请求什么东西?

我之前在做个东西。。也是跨域的
没用P3P,自己在页面写个iframe
访问checkout的时候。你可以在checkout中加入iframe用JS提交一个请求给另外一个webapp。。只是这数据的传输暴露了。


处理支付的页面是one page check out,所有的操作都是在那个页面上完成的。AJAX就是处理些送货地址啦,送货方式及支付方式等的信息。
0 请登录后投票
   发表时间:2008-11-11  
这些系统之间的交互在编码之前就应该着手进行设计好,如果现在这么简单的时候已经该觉到困难,建议还是重新理清思路吧,系统间交互不一定要什么cookie才能搞定的。
1 请登录后投票
   发表时间:2008-11-11  
建议你用单点登录作,用两个APACHE并且分别装WEBAGENT,APACHE再整合你的TOCAT.
0 请登录后投票
   发表时间:2008-11-11  
实际不用搞的这么复杂,我实现过中国XX公司的全国和省级网站的单点登录,采用的是SAML2.0跨域的单点登录规范,对于你们的情况,简单的说,就是需要一个IDP,负责所有的用户认证授权工作,此IDP要求有独立的域名,其他网站都可以视为SP,当用户从SP1访问到SP2的时候,需要跳转到IDP进行验证,IDP会签发一个artifact,跳转回SP2,SP2通过后台进行artifact验证,然后创建自己的会话。整个过程不需要采用URL重写等技术。最重要的是了解SAML规范。
0 请登录后投票
   发表时间:2008-11-11  
架构有问题!
0 请登录后投票
   发表时间:2008-11-11  
重写绘话是不是会好些啊。 cookie 不能跨域 不过可以在登陆的时候把cookie对每个域名都写个 呵呵 简单的想法 session的话 可以自己写个做到唯一区别客户段就好
0 请登录后投票
   发表时间:2008-11-12  
memcached
0 请登录后投票
   发表时间:2008-11-13  
看了这么久,缺少订单的概念,一般的购物流程都是下完订单才去进行支付的.
有个问题,你们的支付网关是自己开发的?为什么要从session那里取客户信息去支付网关?直接通过页面跳转到支付网关不行吗?
0 请登录后投票
   发表时间:2008-11-13  
我觉得用session不是很保险,session会话会在一定的时间范围内消失,如果你把客户购买的商品信息持久化了,那么就算你服务器down掉了,重新启动服务器,客户购买的想、商品信息还在,只要客户登陆就可以checkout了,然后你可以在一个月以后消除客户选择但是没有pay for的商品

我当时在淘宝上购买东西的时候选了很多,但是没有付款,他一致给我保存着信息,但是每次登陆后看到这些东西都很烦,但是一个月过去后这东西就没有了
0 请登录后投票
   发表时间:2008-11-14  
high_java 写道
我觉得用session不是很保险,session会话会在一定的时间范围内消失,如果你把客户购买的商品信息持久化了,那么就算你服务器down掉了,重新启动服务器,客户购买的想、商品信息还在,只要客户登陆就可以checkout了,然后你可以在一个月以后消除客户选择但是没有pay for的商品

我当时在淘宝上购买东西的时候选了很多,但是没有付款,他一致给我保存着信息,但是每次登陆后看到这些东西都很烦,但是一个月过去后这东西就没有了

那就设置定时清除,或7天或1个月等等,这应该是小事,如果他真的想买就不会闲麻烦重新购买的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics