ajax 跨域请求 php, sessionid 一直变化 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容 #Wrapper { background-color: #e2e2e2; background-image: url("/static/img/shadow_light.png"), url("//cdn.v2ex.com/assets/bgs/circuit.png"); background-repeat: repeat-x, repeat-x; } #Wrapper.Night { background-color: #1f2e3d; background-image: url("/static/img/shadow.png"), url("//cdn.v2ex.com/assets/bgs/circuit_night.png"); background-repeat: repeat-x, repeat-x; background-size: 20px 20px, 162.5px 162.5px; }
rzh
V2EX    程序员

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

  •  
  • rzh 2017-01-05 11:04:51 +08:00 9941 次点击
    这是一个创建于 3214 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ajax 跨域请求 php 后台,用 session 作为会话控制,没刷新一次页面就生成新的 sessionid ,无法记录上次保存的内容,怎么解决呢。
    19 条回复    2017-01-06 17:48:33 +08:00
    dwood
        1
    dwood  
       2017-01-05 11:19:07 +08:00
    cookie 不能跨域,要不把 sessionid 重写到 url 上?
    ic2y
        2
    ic2y  
       2017-01-05 11:19:53 +08:00
    抓住问题的关键,为什么刷新一次,就生成新的 sessionid ?无非是两种情况。

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

    2.那就是你自己的代码问题。这就没什么好说的了。不要浪费其他无谓的时间,专心找找 你 操作 session 和 cookie 的部分,看看你操作 cookie 的时候,是不是重置了什么东西。这一步,也能在 Chrome 的调试功能里看到一些 set-cookie 的 header
    rzh
        3
    rzh  
    OP
       2017-01-05 11:25:29 +08:00
    @dwood p3p 说可以让 cookie 跨域,但是没有成功,把 sessionid 返回到前端再每次访问时提交过来,总觉得不安全。重写该怎么去做呢。
    dwood
        4
    dwood  
       2017-01-05 11:35:51 +08:00
    @rzh 重写就跟你说的差不多吧, cookie 跨域需要设置 Access-Control-Allow-Origin , Access-Control-Allow-Credentials 两个属性吧,服务端和网页都要设置。
    rzh
        5
    rzh  
    OP
       2017-01-05 11:37:50 +08:00
    @ic2y 如果没有跨域的话, sessionid 就不会改变,只要一出现跨域就会出现 sessionid 一直在变化, get 请求用 jsonp 可以解决, ajax 的 post 请求每访问一次就出现新的 sessionid 。
    rzh
        6
    rzh  
    OP
       2017-01-05 11:39:20 +08:00
    @dwood 这两个属性我设置了,不设置的话,请求就过不来,数据都可以正常的提交和返回,就是 session 的问题一直没解决。
    angusun
        8
    angusun  
       2017-01-05 11:40:13 +08:00
    @rzh 我推荐读一下这个文章, 讲的蛮清楚的。
    rzh
        9
    rzh  
    OP
       2017-01-05 11:42:35 +08:00
    @dwood Access-Control-Allow-Credentials 这个属性,在 ajax 也需要添加一行代码 xhrFields:{
    withCredentials:true
    },
    这样确实可以解决 session 的问题,但总感觉前端参与处理的太多,能不能只动后台就可以结局呢。
    rzh
        10
    rzh  
    OP
       2017-01-05 11:43:11 +08:00
    @angusun 好的,谢谢,我先看一下。
    dwood
        11
    dwood  
       2017-01-05 11:50:38 +08:00
    @rzh 就加了一行代码就多了。。。强迫症啊
    sheldondai
        12
    sheldondai  
       2017-01-05 11:57:24 +08:00
    13 楼正解 @rzh
    batnss
        13
    batnss  
       2017-01-05 14:03:34 +08:00
    正解
    R18
        14
    R18  
       2017-01-05 14:06:17 +08:00
    13L 果然是正解
    zouqqz
        15
    zouqqz  
       2017-01-05 17:26:45 +08:00
    跨子域的话要设置 php.ini 中的 session.cookie_domain = .mydomain.com ,跨域名的话只能网址带参数
    eoo
        16
    eoo  
       2017-01-05 18:02:33 +08:00 via Android
    17 楼正解
    mzsongyan
        17
    mzsongyan  
       2017-01-05 19:49:10 +08:00 via iPhone
    正解
    halfcoder
        18
    halfcoder  
       2017-01-05 23:02:54 +08:00
    正解
    az999
        19
    az999  
       2017-01-06 17:48:33 +08:00
    t/317862#reply8 ,这是我的一些历程,希望能帮到你,
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 21:06 PVG 05:06 LAX 14:06 JFK 17:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86