跨域会话 - 共享购物车跨域

Jar*_*vec 13 php cookies session client-side cross-domain

我们用eshop(php,mysql)解决了这个问题.客户希望在具有共享购物车的两个域上拥有相同的电子商店.在商店中,顾客可以在没有用户帐户的情况下进行购物(无法登录).并且存在问题,如何使共享购物车跨域.

来自购物车的数据存储在会话中,我们也存储在数据库中.但我们无法解决在域上传输数据的问题.识别未登记的用户并非防洞(研究).

这个例子,它应该如何工作

客户转到domainOne并向购物车添加一些内容.然后他去domainTwo(通过链接,输入域名地址,然而)并添加一些其他的东西到购物车.在购物车中,他有来自两个域的东西(刷新页面后).

你有什么想法,如何解决这个问题?

什么行不通:

  • 由于客户要求,无法重定向
  • Cookie与域名相关
  • set_cookie与其他域名无法正常工作
  • 最简单的方法是仅继承sessionid(存储在cookie中),但我们不知道如何全面识别未记录的用户.
  • 还有其他地方,除了cookie之外,数据可以存储在客户端吗?(可能不是)
  • 我们不能使用url中的params发送sessionid(如果用户点击链接到其他域)或解析标题引用,bcs我们不知道,用户如何实现其他域.

如果你无法理解我,请带我一个问题.如果您认为,在共享(普通)购物车的两个域上使用eshop是个坏主意,请不要告诉我,我们知道.

谢谢你的每一个答案.

fav*_*avo 9

您可以使用第三个域来识别所有域中的客户.

例如,在http://thirdDomain.com/session.php上使用PHP文件,该文件包含在两个商店的所有页面上.

样品:

<script type="text/javascript" src="http://thirdDomain.com/session.php"></script>
Run Code Online (Sandbox Code Playgroud)

在您的客户切换域后,您可以使用第三个域将他识别为同一客户.

您可以将两个商店的会话ID分配给第三个域中的会话ID,以访问两个商店的购物车.您只需要通知第三个域您的商店会话(即将它们添加为参数).

根据您对代码和模板的灵活程度,您甚至可以使用第三个域中的输出来定义商店中的会话ID.这样,您可以在所有域上使用相同的会话ID.但通常会话ID分配应该是更安全的方式.

使用javascript版本,您还可以输出脚本,这些脚本可以将会话ID添加到当前html页面中的所有传出链接和表单到其他域.如果您可以将您的客户识别为阻止Cookie,则可能会感兴趣.您还可以使用javascript通知父文档有关现有会话的信息.