繁体   English   中英

如何使用ajax请求javascript / PHP将会话存储在远程服务器上

[英]How to store session at remote server with ajax request javascript/PHP

我从http:// localhost:8080启动服务器,并尝试使用http://192.168.1.2/的 ajax服务器进行查询。 我需要做一些事情来发送set cookie命令,以将cookie存储在192.168.1.2服务器上,并在本地服务器上从ajax获取信息。

因此,使用javascript AJAX请求的代码:

let query = this.http.get('http://192.168.1.2/testdb.php');

query.toPromise().then((result) => {
   console.log(result);
   console.log(result.json());
});

我正在查询服务器192.168.1.2以从中获取信息,并在脚本工作时将信息存储在会话中。

在服务器上,我尝试执行某些操作并将信息存储在会话变量中。 但是我不能,因为每次我从本地主机向192.168.1.2发送新查询时,服务器(192.168.1.2)都会每次设置新会话。 如果我没记错的话,我需要正确设置cookie,以将会话存储在远程服务器上。

我在PHP服务器(192.168.1.2)上的代码是:

session_start();
  header('Access-Control-Allow-Origin: *');            
  header('Access-Control-Allow-Headers: *');     

  echo "<pre>";
  var_dump(headers_list());       
  echo "</pre>";         


  echo json_encode(array('success' => true, 'session_id' => session_id()));

每次查询时,我都会获得新的会话ID。 要存储会话,我需要ID始终是ID。 那么,如何在远程服务器上存储会话信息呢? PS对不起,我的英语不好,我很难解释。

无法通过ajax调用保持会话,因为它每次都会创建一个新的http请求。

解决方法是在客户端存储存储ID,并且每次将ID与请求一起发送到远程服务器。 在远程服务器上,使用旧ID生成新会话。 https://404it.no/en/blog/javascript_cross-domain_request_with_session

_SESSION变量就像cookie。 根据您的情况,您应该在会话中存储一个ID以及一个将用户ID发送到您的服务器的用户ID。 服务器将检索用户标识并返回该标识。 就像是 :

<?php
function getInfo(){
    $id = $_GET['userId'];
    //some id validations;
    $sessionData = $_SESSION[$id];
    echo json_encode($sessionData);
}

function setInfo(){
    $id = generateuserid();
    //some id validation 
    $sessionData = array('id' => session_id(), 'data' => 'data'); // the data you need to store;
    $_SESSION[$id] = $sessionData;
    echo json_encode(array('userId' => $id));
}

?>

然后为您的Javascript在URL中传递变量

let query = this.http.get(http://192.168.1.2/testdb.php?userId=someid);

query.toPromise().then((result)=>{
    console.log(result);
    console.log(result.json());
});

希望能帮助到你 !

  • 尼克

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM