项目前后端分离,后端PHP开启本地80端口,前端Vue开启另外的接口。
做登录时,登录成功以后后端 login.php 将 userid 存到 session,跳转到首页后,后台 check.php 获取 userid。
此时已经跨域,获取不到 userid。
目前我想到的其他办法是在登录成功后,在数据库新表对应userid下新增一个过期时间,每次请求的时候,都拿当前时间跟数据库过期时间对比,过期则跳转登录,不过期则更新过期时间。
想问下各位有什么更好的解决办法吗?
项目前后端分离,后端PHP开启本地80端口,前端Vue开启另外的接口。
做登录时,登录成功以后后端 login.php 将 userid 存到 session,跳转到首页后,后台 check.php 获取 userid。
此时已经跨域,获取不到 userid。
目前我想到的其他办法是在登录成功后,在数据库新表对应userid下新增一个过期时间,每次请求的时候,都拿当前时间跟数据库过期时间对比,过期则跳转登录,不过期则更新过期时间。
想问下各位有什么更好的解决办法吗?
前端在vue项目中设置 axios的withCredentials 为 true,后端设置允许CORS跨域
参考下这个文章看看能不能行:https://www.cnblogs.com/eleve...
这个问题应该改为 PHP Cookie 跨域问题,因为 PHP 的 Session 是通过 cookie 来定位的,Cookie和Session的联系参考 都9102年了,还问Session和Cookie的区别
有两个解决方法
方法1: 通过 nginx 实现同域
例如 nginx 开 80 端口,PHP 使用 FPM 开启 9000 端口,前端开启 8000 端口
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8000;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
这样 url 中带有 .php
的就去请求 PHP 接口,其他走前端接口
方法2: 自己实现 Session 功能
使用 redis
等软件存储用户数据,然后前端每次请求都带一个相同的 Token
,后端使用这个 Token
去存储中获取对应的数据
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.1k 阅读
1 回答1.2k 阅读
session存入redis?