php setcookie 没有正常工作

php setcookie is not working with no errors

我正在尝试使用 PHP 设置 cookie。我写了一个登录脚本来检查从用户那里收到的数据与数据库数据,然后如果数据匹配,它会设置一个 cookie 来存储用户名和密码,以便在接下来的两个小时内使用。 这是一个 PHP 脚本,用于处理 HTTP POST 请求和输出 JSON 以用于 React 应用程序。

我在我的代码中使用了 ob,我确定在设置 cookie 之前没有 headers 发送。

这就是我的代码的样子。

    <?php
        ob_start();

        function cook($user, $pass, $time){
            setcookie("user", $user, time() + $time, "/", "localhost", 0);
            setcookie("pass", $pass, time() + $time, "/", "localhost", 0);
        }

        header('Content-Type: application/json');

        //login code(receive data, check password, ...)

        cook($user, hash("sha512", $pass), 7200);

        $output = //my code output object

        echo json_encode($output);

        ob_end_flush();

没有错误和异常。

更新: 我正在使用 cross-origin 请求。我的客户在 localhost:3000 上 PHP 脚本在 localhost:8080

上 运行

问题已解决。实际问题来自 post 请求。它没有随请求发送凭据。 首先,我坐在一起 Credentials to true。然后更改一些 headers 以在我的 apache 配置中接受凭据,如下所示:

Header set Access-Control-Allow-Origin "http://localdev.localdev.com:3000"
Header set Access-Control-Allow-Headers "Content-Type"
Header set Access-Control-Allow-Credentials "true"

注意:正如我在评论中提到的,我还在 /etc/hosts 中为我的 127.0.0.1 添加了一个域。 我知道这不完全是 PHP 问题。但这可能会有所帮助。