Хорошо, поэтому я столкнулся с довольно странной проблемой.
Я создаю экземпляр входа для пользователей.
Когда я публикую форму входа без fetch()
, она работает.Мой браузер (как Firefox, так и Chrome) правильно устанавливает cookie, и я могу быть «аутентифицирован».
Однако, когда я отправляю данные через fetch()
, они не 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);
}
Сценарий fetch()
уже совсем пустминимум, только запрос body
и method
.Я удалил все лишние заголовки, чтобы посмотреть, поможет ли это.Это не:
function postForm(url, data) {
return fetch(url, {
body: data,
method: 'post'
})
.then(response => response.json());
}
Для справки: я использую эту библиотеку PHPAuth .