【问题标题】:php session not working with ajaxphp会话不适用于ajax
【发布时间】:2018-02-09 11:31:41
【问题描述】:

我有一个奇怪的问题是 php 会话变量在 ajax 访问的页面上不起作用。

服务器端代码:s2.php

<?php
    session_start();
    header("Access-Control-Allow-Origin: *");

    echo '{"response":"'.$_SESSION["email"].'"}';

    exit();
?>

客户端代码:index.php

$.ajax({
    url: 'mysite.com/s2.php',
    data: info,
    error: function() {
        console.log("broke :( ");
    },
    dataType: 'json',
    success: function(data) {
        console.log(data);
    },
    type: 'POST'
});

当我导航到 mysite.com/index.php 时,我在控制台中看到:{response: ""}

当我导航到 mysite.com/s2.php 时,我看到 {response: "email@address"} 显示在浏览器中。

我只是不明白为什么 s2.php 可以正常访问会话,但在通过 ajax 调用运行时却不能。

另外,当我在我的家庭服务器上运行它时,一切似乎都很好。但是,当它在我妻子的 bluehost.com 服务器上运行时,它就会出现问题。这和他们的设置有关吗?

【问题讨论】:

  • 也许是个愚蠢的问题,但是您是否在她的 bluehost 服务器上登录了该应用程序?会话不跨越服务器。
  • @Max 在这一点上,我认为我做了一些愚蠢的事情。但是,是的。 index.php在bluehost服务器上,就是原来设置$_SESSTION["email"]的页面
  • 您是否尝试过将 withCredentials 设置为 true?
  • @Musa 我假设您的意思是作为 ajax 调用的一部分?刚试过,没区别。
  • 根据php.net/manual/en/function.session-start.php官方文档,你必须在你要使用会话的每一页中调用session_start()方法,所以尝试在你的索引中调用session_start()。 php.

标签: php jquery ajax session


【解决方案1】:

根据official documentation,您必须在您要使用会话的每一页中调用session_start()方法,因此请尝试在您的index.php中调用session_start()

此方法启动新会话或恢复现有会话,同时检查与您的 index.php PHPSESSID 匹配的 AJAX 请求发送的 PHPSESSID cookie。

【讨论】:

  • 确定我正在查看www.mysite.com/ 的站点,但正在使用mysite.com/s2.php 进行AJAX 调用它确定为跨域并且没有发送PHPSESSID cookie。
猜你喜欢
  • 1970-01-01
  • 2018-03-15
  • 2017-07-30
  • 2010-09-23
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2017-11-03
  • 2017-03-01
相关资源
最近更新 更多