PHP session 和跨域请求处理涉及到两个方面:一是如何在 PHP 中使用 session,二是如何解决跨域请求导致的 session 丢失问题。
- PHP session 的使用:
- 首先,在每个需要使用 session 的页面的顶部添加
session_start();
函数,以开启 session。 - 使用
$_SESSION
超全局变量来存储和获取 session 数据,例如:$_SESSION['username'] = 'John'; echo $_SESSION['username']; // 输出 "John"
- 使用
session_destroy();
函数来销毁 session。
- 跨域请求处理:
当进行跨域请求时,由于浏览器的同源策略,可能会导致 session 丢失。为了解决这个问题,可以采取以下措施:
-
使用 CORS(跨域资源共享)策略。在服务器端设置响应头,允许跨域请求携带凭证(cookie),例如:
header('Access-Control-Allow-Origin: http://example.com'); // 替换为实际的请求源 header('Access-Control-Allow-Credentials: true');
注意,这里的
Access-Control-Allow-Origin
不能设置为通配符*
,必须指定具体的源。 -
使用
withCredentials
属性。在客户端发起请求时,设置withCredentials
属性为true
,以便携带凭证(cookie)。以 JavaScript 的fetch
为例:fetch('http://example.com/api', { method: 'GET', credentials: 'include' // 设置为 'include' 以携带凭证 });
通过以上方法,可以在 PHP 中使用 session,并解决跨域请求导致的 session 丢失问题。