@Ibishka

Почему ajax возвращает null?

У меня есть 2 проекта, 1 это фронт на React и 2 бек на php. В беке есть файл logged.php в нем
session_start();
echo json_encode($_SESSION['logged']);

Изначально в сессию для теста положил значение "user"
когда на него перехожу пишет "user" все гуд.
Но когда на него делаю fetch запрос мне возвращает null
В чем промлема?
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
@dzhebrak
session_start() или стартует новую сессию, либо возобновляет существующую. Для второго варианта php должен знать идентификатор сессии, который или хранится в cookies (PHPSESSID), или передается как параметр url. В случае запроса с помощью fetch вы не передаете ни первое, ни второе, поэтому php начинает новую чистую сессию, в которой переменная logged не определена.

https://www.php.net/manual/ru/session.examples.bas...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
При отправке запроса на другой домен fetch не передает куки, а без куков ваш сервер не может определить пользователя. Подробнее тут:
https://learn.javascript.ru/fetch-api#credentials
Вам нужно указать параметр credentials равным include, при этом для корректной работы сервер у вас должен отдавать заголовок Access-Control-Allow-Credentials.

Сам с собой это только если ваш сайт и бэкенд на разных доменах. Если они на одном и том же домене, но ошибка сохраняется, ищите причину на серваке или попробуйте для начала заюзать XMLHttpRequest.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы