首页 / AJAX / Ajax重置PHP会话
Ajax重置PHP会话
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Ajax重置PHP会话,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1442字,纯文字阅读大概需要3分钟。
内容图文
![Ajax重置PHP会话](/upload/InfoBanner/zyjiaocheng/669/f3550531878a4c708230e74e356be29b.jpg)
我知道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,但无济于事.对于这个问题,我深表歉意,但我根本找不到解决方法.
解决方法:
这是一个访问控制问题,而不是ajax问题.
当您直接从浏览器访问URL时,您正在从所访问的域中请求一个(会话)cookie.在这种情况下,使用ajax时,您是从不是您要访问的域的域请求cookie.
在api.example.com上的php API文件上,尝试执行此操作.
header('Access-Control-Allow-Origin: example.com');
header('Access-Control-Allow-Credentials: true');
然后在ajax请求文件上,像这样使用xhrFields参数.
$.ajax({
url: 'https://api.example.com',
xhrFields: { withCredentials: true },
success: function(data) {
console.log(data)
}
});
现在,只要您从来源example.com调用请求,Cookie就会像预期的那样运行.
内容总结
以上是互联网集市为您收集整理的Ajax重置PHP会话全部内容,希望文章能够帮你解决Ajax重置PHP会话所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。