未在POST请求中设置PHP Refresh令牌cookie

时间:2020-05-25 03:22:01

标签: php rest authentication cookies jwt

全部。我有一个使用JWT访问和刷新令牌进行身份验证的React App。我正在尝试实现刷新令牌。 React App客户端托管在localhost:8100上,PHP后端托管在localhost:80上。当服务器进行身份验证并生成刷新令牌时,它应在服务器上设置一个HttpOnly cookie。我的意图是让React App客户端向php登录处理程序发送一个POST请求,该请求将返回访问令牌作为json负载并设置刷新令牌cookie。

问题在于,PHP后端API在API调用期间未设置cookie。我的测试过程是:1.从客户端发送POST请求。2.使用浏览器检查localhost cookie。

PHP代码:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization');
header('Content-type:application/json;charset=utf-8');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Cache-Control: no-cache,no-store,max-age=0,must-revalidate');
header('Pragma: no-cache');
header('Expires: -1');

// Process the initial request with good status first
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

$data = json_decode(file_get_contents('php://input'));

...
Login Handling
JWT Token Generation
...

$cookieName = "refreshToken";
$cookieHttpOnly = true;
$cookiePath = "/";
$cookieDomain = null;
$cookieSecure = false;
setcookie($cookieName, $refreshToken, $refreshExpiry, $cookiePath, $cookieDomain, $cookieSecure, $cookieHttpOnly);

http_response_code(200);

echo json_encode(array('success' => true, 'jwt_token' => $jwt, 'jwt_expiry' => $expireClaim));

如果我仅使用setCookie相关代码运行另一个PHP文件,则cookie设置正确。从POST请求启动时,它只是不起作用。

我想做些什么吗? HTTP标头有问题吗?还是无法通过这样的POST请求设置cookie?

谢谢。

0 个答案:

没有答案