Cookie не устанавливается при публикации с fetch () - PullRequest
0 голосов
/ 08 июня 2018

Хорошо, поэтому я столкнулся с довольно странной проблемой.

Я создаю экземпляр входа для пользователей.

Когда я публикую форму входа без 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 .

1 Ответ

0 голосов
/ 08 июня 2018

По умолчанию для извлечения файлов cookie не включено, это можно сделать, добавив параметр credentials и установив для него значение same-origin:

function postForm(url, data) {
  return fetch(url, {
      credentials: "same-origin",
      body: data,
      method: 'post'
    })
    .then(response => response.json());
}

Подробнее о Request.credentials в MDN .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...