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

时间:2017-02-03 13:58:56

标签: javascript php ajax session cookies

我在http://localhost:8080启动服务器,并尝试使用http://192.168.1.2/的ajax服务器进行查询。我需要做同样的事情来发送set cookie命令来存储192.168.1.2服务器上的cookie,并在localhost服务器上从它获取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以获取信息,并在脚本工作时将信息存储在会话中。

在服务器上,我尝试做一些事情并将信息存储在会话变量中。但我不能,因为每次我从我的localhost向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始终是一些。 那么如何在远程服务器上存储会话信息呢? 附:抱歉我的英语不好,我很难解释。

2 个答案:

答案 0 :(得分:2)

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

SOLUTION是客户端的商店seeion id,每次都会向远程服务器发送id。在远程服务器上使用旧ID生成新会话。 https://404it.no/en/blog/javascript_cross-domain_request_with_session

答案 1 :(得分:0)

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

<?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());
});
希望它有所帮助!

  • 尼克