1
dwood 2017-01-05 11:19:07 +08:00
cookie 不能跨域,要不把 sessionid 重写到 url 上?
|
2
ic2y 2017-01-05 11:19:53 +08:00
抓住问题的关键,为什么刷新一次,就生成新的 sessionid ?无非是两种情况。
1.浏览器这边删除了 session (可能是某些反追踪插件的原因),自己用 Chrome 自带的调试功能,观察请求,看看 sessionid 在 cookie 里还在不在。 2.那就是你自己的代码问题。这就没什么好说的了。不要浪费其他无谓的时间,专心找找 你 操作 session 和 cookie 的部分,看看你操作 cookie 的时候,是不是重置了什么东西。这一步,也能在 Chrome 的调试功能里看到一些 set-cookie 的 header |
3
rzh OP @dwood p3p 说可以让 cookie 跨域,但是没有成功,把 sessionid 返回到前端再每次访问时提交过来,总觉得不安全。重写该怎么去做呢。
|
4
dwood 2017-01-05 11:35:51 +08:00
@rzh 重写就跟你说的差不多吧, cookie 跨域需要设置 Access-Control-Allow-Origin , Access-Control-Allow-Credentials 两个属性吧,服务端和网页都要设置。
|
5
rzh OP @ic2y 如果没有跨域的话, sessionid 就不会改变,只要一出现跨域就会出现 sessionid 一直在变化, get 请求用 jsonp 可以解决, ajax 的 post 请求每访问一次就出现新的 sessionid 。
|
6
rzh OP @dwood 这两个属性我设置了,不设置的话,请求就过不来,数据都可以正常的提交和返回,就是 session 的问题一直没解决。
|
7
angusun 2017-01-05 11:39:25 +08:00
|
9
rzh OP @dwood Access-Control-Allow-Credentials 这个属性,在 ajax 也需要添加一行代码 xhrFields:{
withCredentials:true }, 这样确实可以解决 session 的问题,但总感觉前端参与处理的太多,能不能只动后台就可以结局呢。 |
12
sheldondai 2017-01-05 11:57:24 +08:00
13 楼正解 @rzh
|
13
batnss 2017-01-05 14:03:34 +08:00
正解
|
14
R18 2017-01-05 14:06:17 +08:00
13L 果然是正解
|
15
zouqqz 2017-01-05 17:26:45 +08:00
跨子域的话要设置 php.ini 中的 session.cookie_domain = .mydomain.com ,跨域名的话只能网址带参数
|
16
eoo 2017-01-05 18:02:33 +08:00 via Android
17 楼正解
|
17
mzsongyan 2017-01-05 19:49:10 +08:00 via iPhone
正解
|
18
halfcoder 2017-01-05 23:02:54 +08:00
正解
|
19
az999 2017-01-06 17:48:33 +08:00
https://www.v2ex.com/t/317862#reply8 ,这是我的一些历程,希望能帮到你,
|