好吧,所以我遇到了一个相当奇怪的问题。
我正在为用户创建登录实例。
当我发布登录表单时
fetch()
它起作用了。我的浏览器(包括火狐和Chrome)正确地设置了cookie,我可以“认证”。
但是,当我通过
获取()
它没有
setcookie()
在后端。
注:
假设凭证是正确的。
这是我的PHP登录脚本
$user = htmlentities($_POST['username'], ENT_QUOTES);
$pass = htmlentities($_POST['password'], ENT_QUOTES);
$remember = isset($_POST['rememberme']) ? true : false;
$login = $PHPAuth['auth']->login($user, $pass, $remember);
/**
* $PHPAuth == [
* 'config' => PHPAuthConfig(),
* 'auth' => PHPAuth()
*/
if($login['error']) {
echo json_encode($login);
} else {
// create new cookie
setcookie(
$PHPAuth['config']->cookie_name,
$login['hash'],
$login['expire'],
'/', # path
'localhost', # domain
false, # HTTPS
true # HTTP-ONLY
);
echo json_encode($login);
}
这个
获取()
脚本处于最低限度,仅请求
body
和
method
.我去掉了所有额外的头,看看是否有帮助。它没有:
function postForm(url, data) {
return fetch(url, {
body: data,
method: 'post'
})
.then(response => response.json());
}
供参考:我用这个
PHPAuth
图书馆。