【发布时间】:2018-11-19 23:43:18
【问题描述】:
我正在尝试通过 JSON 数据传递变量来将 PHP 会话转换为 NodeJS 会话,但出现错误。还有其他任何可以在 PHP 和 NodeJS 之间共享会话吗? PHP 包含会话,Node 将从 PHP 获取会话。
这是php页面输出:{"id":"1","username":"jon"}
收到此错误:Unexpected end of JSON input
我的 PHP
<?php
session_start();
include 'db.php';
$respose["session"]=array();
if (isset($_SESSION['userid']))
{
$respose["session"] = array(
'id'=> $_SESSION['id'],
'username'=> $_SESSION['username']
);
echo json_encode($respose["session"]);
}
?>
我的 NodeJS
http.get("http://localhost/sapapplication/php_application/php/
session_node.php", res => {
const { statusCode } = res;
const contentType = res.headers["content-type"];
let error;
if (statusCode !== 200) {
error = new Error("Request Failed.\n" + `Status Code: ${statusCode}`);
}
if (error) {
console.error(error.message);
// consume response data to free up memory
res.resume();
return;
}
res.setEncoding("utf8");
let rawData = "";
res.on("data", chunk => {
rawData += chunk;
console.error('--->',chunk);
});
res.on("end", () => {
try {
const parsedData = JSON.parse(rawData);
req.session.user = parsedData;
resp.json(parsedData);
} catch (e) {
console.error(e.message);
}
});
}).on("error", e => {
console.error(`Got error: ${e.message}`);
next(e);
});
【问题讨论】:
-
您得到的错误可能是因为 $_SESSION['userid'] 可能没有为 Node.JS 的会话设置。由于未设置,因此您不会输出任何内容,因此会出现该错误。
-
你能添加更多关于你想要做什么的细节吗?您是否尝试将用户的会话信息传递给 Node.JS?还是 Node.JS 登录并管理它自己的会话?
-
我刚刚意识到,如果您没有这些信息,响应可能听起来令人困惑:我问的原因是会话(通常)由 cookie 标识。由于 Node.JS 的请求机制没有用户的 cookie,因此它不会得到与浏览器相同的响应。当然,除非 Node.JS 是客户端本身。了解更多有关您正在尝试做的事情的信息可能会为您提供更好的答案。
-
我正在尝试在节点 js 中使用 php 会话。