Ух, попробую описать суть проблемы. Есть веб-сервис. Он постепенно переписывается на React+Redux, но большая его часть, пока что, на PHP+Yii.
Те части приложения, которые написаны на React'e обращаются к контроллерам, которые реализуют API для их работы.
Вылезла такая проблема - при некоторых неясных условиях серверная часть не понимает, что юзер залогинен. Проблема проявляется только на локалхосте, на продакшене все нормально работает.
Интересный момент - если скопировать ссылку, по которой реакт-приложение пытается получить данные с сервера и просто открыть в браузере - все работает, пользователь детектится как залогиненный.
Я заподозрил проблему с куками, и заметил, мягко говорю, странное поведение. На проде в заголовках есть раздел cookie, на локалке - нет. При чем, что важно, нет его и в тех запросах, что не работают (т.к. юзер, якобы, не залогинен) и в тех запросах, которые работают. WTF?
В реакте для запросов использую fetch, c такими параметрами:
const FETCH_PARAMS = {
headers: { "Content-Type": "application/json" },
mode: "cors",
credentials: "include"
};
Для CORS сервер шлет такие заголовки:
header("Access-Control-Allow-Origin: {$http_origin}");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type, X-Requested-With");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
Не знаю куда дальше смотреть. Поделитесь советом каким нибудь.