ajax 跨域请求 php, sessionid 一直变化

2017-01-05 11:04:51 +08:00
 rzh
ajax 跨域请求 php 后台,用 session 作为会话控制,没刷新一次页面就生成新的 sessionid ,无法记录上次保存的内容,怎么解决呢。
9381 次点击
所在节点    程序员
19 条回复
dwood
2017-01-05 11:19:07 +08:00
cookie 不能跨域,要不把 sessionid 重写到 url 上?
ic2y
2017-01-05 11:19:53 +08:00
抓住问题的关键,为什么刷新一次,就生成新的 sessionid ?无非是两种情况。

1.浏览器这边删除了 session (可能是某些反追踪插件的原因),自己用 Chrome 自带的调试功能,观察请求,看看 sessionid 在 cookie 里还在不在。

2.那就是你自己的代码问题。这就没什么好说的了。不要浪费其他无谓的时间,专心找找 你 操作 session 和 cookie 的部分,看看你操作 cookie 的时候,是不是重置了什么东西。这一步,也能在 Chrome 的调试功能里看到一些 set-cookie 的 header
rzh
2017-01-05 11:25:29 +08:00
@dwood p3p 说可以让 cookie 跨域,但是没有成功,把 sessionid 返回到前端再每次访问时提交过来,总觉得不安全。重写该怎么去做呢。
dwood
2017-01-05 11:35:51 +08:00
@rzh 重写就跟你说的差不多吧, cookie 跨域需要设置 Access-Control-Allow-Origin , Access-Control-Allow-Credentials 两个属性吧,服务端和网页都要设置。
rzh
2017-01-05 11:37:50 +08:00
@ic2y 如果没有跨域的话, sessionid 就不会改变,只要一出现跨域就会出现 sessionid 一直在变化, get 请求用 jsonp 可以解决, ajax 的 post 请求每访问一次就出现新的 sessionid 。
rzh
2017-01-05 11:39:20 +08:00
@dwood 这两个属性我设置了,不设置的话,请求就过不来,数据都可以正常的提交和返回,就是 session 的问题一直没解决。
angusun
2017-01-05 11:39:25 +08:00
angusun
2017-01-05 11:40:13 +08:00
@rzh 我推荐读一下这个文章, 讲的蛮清楚的。
rzh
2017-01-05 11:42:35 +08:00
@dwood Access-Control-Allow-Credentials 这个属性,在 ajax 也需要添加一行代码 xhrFields:{
withCredentials:true
},
这样确实可以解决 session 的问题,但总感觉前端参与处理的太多,能不能只动后台就可以结局呢。
rzh
2017-01-05 11:43:11 +08:00
@angusun 好的,谢谢,我先看一下。
dwood
2017-01-05 11:50:38 +08:00
@rzh 就加了一行代码就多了。。。强迫症啊
sheldondai
2017-01-05 11:57:24 +08:00
13 楼正解 @rzh
batnss
2017-01-05 14:03:34 +08:00
正解
R18
2017-01-05 14:06:17 +08:00
13L 果然是正解
zouqqz
2017-01-05 17:26:45 +08:00
跨子域的话要设置 php.ini 中的 session.cookie_domain = .mydomain.com ,跨域名的话只能网址带参数
eoo
2017-01-05 18:02:33 +08:00
17 楼正解
mzsongyan
2017-01-05 19:49:10 +08:00
正解
halfcoder
2017-01-05 23:02:54 +08:00
正解
az999
2017-01-06 17:48:33 +08:00
https://www.v2ex.com/t/317862#reply8 ,这是我的一些历程,希望能帮到你,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/332337

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX