У меня проблема с AJAX + PHP идентификатором сеанса, когда новый идентификатор генерируется скриптом, полученным через GET. Я создал 2 тестовых сценария, которые раскрывают проблему:
сценарий 1 (закомментировал AJAX, но и XMLHttpRequest, и $ .get () дают одинаковый результат):
<?php
session_start();
ob_start();
echo('test: '.session_id());
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="test"></div>
<script type='text/javascript' src='../node_modules/jquery/dist/jquery.js?<?echo($time)?>'></script>
<script type="text/javascript">
$(document).ready(function() {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function () {
if(xhr.readyState === 4 && xhr.status === 200) {
document.getElementById('test').innerHTML=this.responseText;
resolve('page loaded');
}
}
xhr.open("GET",'http://10.1.1.101/testLinks/test2.php');
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send();
// $.get('test2.php').done(function(val) {
// document.getElementById('test').innerHTML=val;
// })
});
</script>
</body>
</html>
Сценарий 2:
<?php
session_start();
ob_start();
echo('test2: '.session_id());
?>
Вывод:
test: 4occu9mq6o3c16au254grf0s56
test2: 6bk1fdbs3v2bcl9iko31s5nqp4
Глядя на другие темы, я проверил настройку php для включенных файлов cookie, а также время жизни:
php информация о сеансе
Я подтвердил, что при I include 'test2.php';
новый идентификатор сеанса не генерируется. Только при использовании AJAX.
Я не уверен, что еще посмотреть здесь. Любые предложения приветствуются.
РЕДАКТИРОВАТЬ: для ясности, я использую JQuery 3.4.0, однако, после переключения на XMLHttpRequest, я не верю, что это ошибка JQuery, и имеет больше дел с некоторой конфигурацией PHP, но я не уверен, что.