【发布时间】:2018-09-05 23:40:42
【问题描述】:
我知道this question has been asked before,所以我提前道歉,但我已经多次检查了他的解决方案,但它并不能解决我的会话重置问题。
我有一个简单的 php 页面,它输出一个用于调试的会话 id。像这样:
<?php
session_start();
echo session_id();
?>
然后我有一个带有jQuery 的简单HTML 页面,它在该页面上执行ajax 请求并记录输出。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$.post('http://localhost.api.mydomain/sid', {
some: 'data'
}, function(data,status) {
console.log(data);
});
</script>
</head>
<body>
Check your console.
</body>
</html>
如果我手动访问 url http://localhost.api.mydomain/sid 输出永远不会改变,session_id() 保持不变,正如预期的那样。但是,如果我刷新 ajax 页面,输出的 session_id() 会随着每次刷新而改变。
我尝试在php.ini 文件中设置session.cookie_domain,但无济于事。对于这个问题,我深表歉意,但我根本找不到解决方案。
【问题讨论】:
-
如果会话 cookie 随 HTTP POST 请求一起提供,请在“网络”选项卡上检查浏览器的调试工具。如果您的请求是跨域的,您的浏览器安全功能可能会删除 cookie。
-
有没有办法解决这个问题?这是一个 API,所以期望每个用户都更改他们的浏览器设置并不完全理想。
标签: php ajax session session-variables session-cookies