全部。我有一个使用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?
谢谢。