【发布时间】:2020-12-06 06:17:54
【问题描述】:
我刚刚开始使用 react js,并开始面临一些客户端系统的一些问题。在使用(axios 或 ajax)session_id() 重置和重新生成每个请求/调用时,将数据从 react js 发布到 php 文件。还有会话变量重置。我已经尝试了一些来自 stackoverflow 的解决方案,但没有任何效果。我在我的本地主机和其他一些系统中遇到了这个问题。但也可以与其他一些系统一起使用。这就像使用 50% 的系统而不使用 50% 的系统。
但是如果我做同样的事情而不用 ajax 将普通 html 文件中的 js 反应到 php 文件中。会话 ID 未重置或重新生成。
PHP 文件
<?php
session_start();
$session_val = session_id();
header("Access-Control-Allow-Origin: *");
echo $session_val;
?>
来自 REACT JS 的 AJAX 调用
$.ajax({
url: "http://localhost/test.php",
type: "POST",
data: {
action: action,
},
success: function (data) {
},
error: function (jqXHR, text, errorThrown) {
console.log(jqXHR + " " + text + " " + errorThrown);
},
});
AXIOS 呼叫
axios
.post('http://localhost/test.php', this.state)
.then(response =>{
console.log(response.data);
})
.catch(
error => {
console.log(error)
});
【问题讨论】:
-
这可能是一个错字,但是您在 React 和 Axios 调用中的 URL 使用不同的方案(React 是 HTTP 和 Axios HTTPS),这将有不同的会话。
-
抱歉打错了,它不适用于 http 和 https。我已经检查过两者
-
您是否检查了当前会话 ID 是否作为请求标头中 cookie 的一部分发送?
-
@ShreyasSreenivas 你能详细说明如何检查吗?你是在问下面的截图吗? screencast.com/t/4vtxrEchbw
-
您发送的屏幕截图显示了来自服务器的响应。我指的是客户端发送的请求中的 cookie 标头。在您发送的屏幕截图中,转到标题选项卡。检查请求标头中是否存在名为 cookie 的标头。可以参考screencast.com/t/dkgd85sfo5HX
标签: javascript php reactjs ajax session