• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rzh
V2EX  ›  程序员

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

  •  
  •   rzh · Jan 5, 2017 · 10695 views
    This topic created in 3598 days ago, the information mentioned may be changed or developed.
    ajax 跨域请求 php 后台,用 session 作为会话控制,没刷新一次页面就生成新的 sessionid ,无法记录上次保存的内容,怎么解决呢。
    19 replies  •  2017-01-06 17:48:33 +08:00
    dwood
    dwood
    Jan 5, 2017
    1
    cookie 不能跨域,要不把 sessionid 重写到 url 上?
    ic2y
    ic2y
    Jan 5, 2017
    2
    抓住问题的关键,为什么刷新一次,就生成新的 sessionid ?无非是两种情况。

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

    2.那就是你自己的代码问题。这就没什么好说的了。不要浪费其他无谓的时间,专心找找 你 操作 session 和 cookie 的部分,看看你操作 cookie 的时候,是不是重置了什么东西。这一步,也能在 Chrome 的调试功能里看到一些 set-cookie 的 header
    rzh
    rzh
    OP
    Jan 5, 2017
    3
    @dwood p3p 说可以让 cookie 跨域,但是没有成功,把 sessionid 返回到前端再每次访问时提交过来,总觉得不安全。重写该怎么去做呢。
    dwood
    dwood
    Jan 5, 2017
    4
    @rzh 重写就跟你说的差不多吧, cookie 跨域需要设置 Access-Control-Allow-Origin , Access-Control-Allow-Credentials 两个属性吧,服务端和网页都要设置。
    rzh
    rzh
    OP
    Jan 5, 2017
    5
    @ic2y 如果没有跨域的话, sessionid 就不会改变,只要一出现跨域就会出现 sessionid 一直在变化, get 请求用 jsonp 可以解决, ajax 的 post 请求每访问一次就出现新的 sessionid 。
    rzh
    rzh
    OP
    Jan 5, 2017
    6
    @dwood 这两个属性我设置了,不设置的话,请求就过不来,数据都可以正常的提交和返回,就是 session 的问题一直没解决。
    angusun
    angusun
    Jan 5, 2017
    8
    @rzh 我推荐读一下这个文章, 讲的蛮清楚的。
    rzh
    rzh
    OP
    Jan 5, 2017
    9
    @dwood Access-Control-Allow-Credentials 这个属性,在 ajax 也需要添加一行代码 xhrFields:{
    withCredentials:true
    },
    这样确实可以解决 session 的问题,但总感觉前端参与处理的太多,能不能只动后台就可以结局呢。
    rzh
    rzh
    OP
    Jan 5, 2017
    10
    @angusun 好的,谢谢,我先看一下。
    dwood
    dwood
    Jan 5, 2017
    11
    @rzh 就加了一行代码就多了。。。强迫症啊
    sheldondai
    sheldondai
    Jan 5, 2017
    12
    13 楼正解 @rzh
    batnss
    batnss
    Jan 5, 2017
    13
    正解
    R18
    R18
    Jan 5, 2017
    14
    13L 果然是正解
    zouqqz
    zouqqz
    Jan 5, 2017
    15
    跨子域的话要设置 php.ini 中的 session.cookie_domain = .mydomain.com ,跨域名的话只能网址带参数
    eoo
    eoo
    Jan 5, 2017 via Android
    16
    17 楼正解
    mzsongyan
    mzsongyan
    Jan 5, 2017 via iPhone
    17
    正解
    halfcoder
    halfcoder
    Jan 5, 2017
    18
    正解
    az999
    az999
    Jan 6, 2017
    19
    https://www.v2ex.com/t/317862#reply8 ,这是我的一些历程,希望能帮到你,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4367 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 08:43 · PVG 16:43 · LAX 00:43 · JFK 03:43
    ♥ Do have faith in what you're doing.