当前位置: 首页 > 面试题库 >

跨不同域保留会话变量

阳兴文
2023-03-14
问题内容

我不确定这是否可能。

我的“活动”网站正在处理注册并将其保存到我们的数据库中,但是我们的主站点负责处理信用卡处理。通过在主网站上处理当前的购买,会话可用于将数据传递到付款/抄送屏幕。

不必更改我的付款代码(例如接受$ _GET参数),我的$_SESSION变量是否应该传递过来?

例:

$_SESSION['s_address1'] = $_POST['address1'];
$_SESSION['s_address2'] = $_POST['address2'];
$_SESSION['s_city']     = $_POST['city'];
$_SESSION['s_state']    = $_POST['state'];
$_SESSION['s_zip']      = $_POST['zip'];

header('Location: https://www.etm124biz.com/payment.php?oid=' . $oid . '&src=conf&id=' . $seq);

我的payment.php页面在上面查找地址会话变量。


问题答案:

跨域会话ID

默认情况下,使用cookie传递会话ID。由于您的网站位于不同的域中,因此会话cookie不会转移,因此这是阻止跨域会话正常工作的一件事。

转移会话ID的一种技术是将它们附加到所有请求的查询字符串中(PHP甚至对此具有一定程度的内置支持)。但是,这种处理方式有很多缺点-
最重要的是人们一直在复制/粘贴URL,这暗示着揭示有效的会话ID和重用无效的会话ID,因此 不建议这样做

更好的方法是使用Javascript跨所有感兴趣的域发出跨域请求(当然,这需要进行合作)。这样,您可以在需要的多个服务器之间无缝传输会话ID。

共享的会话数据

即使cookie没问题,您也需要将会话数据放在所有服务器通常可以访问的某些存储上。默认存储是本地文件系统,因此,如果要跨域会话,则需要再次更改。

解决此问题的简单方法是使用自定义会话处理程序,该处理程序将数据存储在数据库或其他可全局访问的存储区中。



 类似资料:
  • 问题内容: 我有一个使用AJAX加载新php文件并更新显示的单页网站。 我从主页开始php会话,但是当我使用ajax更新内部html时,我需要这些会话变量来加载新的php文件。 这篇文章与此类似:PHP会话变量未保留。但是我检查了一下,我的php.ini有 主页PHP: 在用户输入之后,我使用ajax调用php文件并加载页面的一个小节: 有人可以告诉我我缺少哪些重要步骤吗?谢谢。 更新: 在主页和

  • 我有一个一页的网站,使用AJAX加载新的php文件和更新显示。 UPDATE:在将session_id()调用添加到主页面和子页面之后,我看到两个页面都有相同的session_id。然而,它仍然不能拉出会话变量,如果我给它赋值,两个同名会话变量将保持相互独立。 这个问题产生的问题的答案:我发现我必须在php.ini文件中设置一个静态session_save路径。对于大多数付费的webhosting

  • 我目前正在从事一个托管在域上的laravel项目。此应用程序的一部分(某些功能)必须位于不同的域上。我在我的网上找到了一条路。在php中,我用以下命令映射了所有路由: 以及需要以相同方式位于另一个域上,但具有不同域的路由。好啊在主域中,我创建了一个具有src属性的图像: 指向此方法路线: 它起作用了。我在不同的域上共享同一个会话,但是,我想问你们,对于这个案例场景,你们是否知道更好的方法。我知道这

  • 我有以下代码: 但是由于某种原因,$_SESSION变量不保留值。输出如下: 注意:未定义的索引:lang in/home/claudio/public_html/index。第13行的php数组()数组([get]= 警告:需要(lang/. php):打开流失败:第23行的 /home/claudio/public_html/index.php中没有这样的文件或目录 致命错误:require(

  • 问题内容: 我当前正在使用一个Web应用程序,每次都调用此Web应用程序,请删除所有当前的Express会话,因此我需要一种方法来保留所有这些会话。我试图用connect- mongodb和connect- redis保留所有这些会话,但是都无效,nodemon总是说req.session是未定义的。我不知道该怎么做才能保留所有会话。 我需要一种方法来保留所有会话,执行时不要丢失它们,并为其提供教

  • 我们正在使用Kafka流的会话窗口来聚合相关事件的到达。除了聚合之外,我们还使用API指定窗口的保留时间。流信息: 会话窗口(非活动时间)为1分钟,传递到的保留时间为2分钟。我们使用定制的来映射事件的时间。 示例: 事件:e1;事件时间:上午10:00:00;到达时间:下午2点(同一天) 事件:e2;事件时间:上午10:00:30;到达时间:下午2:10(同一天) 第二个事件的到达时间是e1到达后