【问题标题】:php session id changes on ajax postajax post上的php会话ID更改
【发布时间】:2013-04-03 22:10:49
【问题描述】:

我在从 sub.mydomain.com 到 domain.com 发布 ajax 帖子时遇到问题。 我已将 cookie 设置为 .mydomain.com 并且我知道会话设置正确,因为如果我在浏览器中转到 sub.mydomain.com 会话 ID 与 mydomain.com 会话 ID 匹配。 但是,当我从 sub.mydomain.com 到 mydomain.com 进行 ajax 发布时,会话 ID 会发生变化。

为了解决这个问题,我在帖子中传递了会话 ID。

但我想知道为什么它没有像预期的那样工作。

任何想法都会有所帮助。

M

【问题讨论】:

    标签: php ajax session-cookies sessionid


    【解决方案1】:

    Cookie 不会在跨源请求中发送(我假设您正在将其用于会话),为了启用此功能,您必须在请求和响应中都设置 withCredentials
    请求xhr.withCredentials = true;
    响应头Access-Control-Allow-Credentials: true

    【讨论】:

    • 谢谢,还是没用。我正在查看 chrome Developer Tools,Request ... Access-Control-Request-Headers:accept, origin, withcredentials, x-requested-with, content-type 中的标头请求和响应。响应.. Access-Control-Allow-Credentials:true 但是会话 ID 仍然错误。
    • 这是我现在在控制台中遇到的错误。 Access-Control-Allow-Headers 不允许带有凭据的请求标头字段
    • 我必须将 withCredentials 添加到响应标头 Allow-Headers 以消除控制台错误。但会话 id 仍然不同。
    • @user1086377 您的 cookie 是否在请求中发送?
    • 是吗?我应该在请求中设置 cookie 吗?我认为开始会议对我有用吗?当使用此代码而不是从 sub.mydomain.com 转到 mydomain.com 时,它工作正常。
    猜你喜欢
    • 2011-07-08
    • 1970-01-01
    • 2010-12-17
    • 2020-07-11
    • 2016-12-23
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多