Как обрабатывать файлы cookie/сессии, если PHP-сервер находится на другом сервере ⇐ Php
-
Гость
Как обрабатывать файлы cookie/сессии, если PHP-сервер находится на другом сервере
У меня общий вопрос по поводу обработки файлов cookie, если во время разработки вы работаете на двух серверах (один сервер для внешнего и внутреннего интерфейса). Я создал веб-приложение с системой входа в систему. Есть два основных пути:
"/" – это общедоступная целевая страница с возможностью входа в систему или создания учетной записи.
"/dashboard" — защищенная стартовая страница после входа в систему
Если вы зарегистрируетесь (создаете новую учетную запись), приложение автоматически войдет в систему (и, следовательно, перенаправит вас на «/dashboard»
Все это работает нормально. Чтобы пользователи не могли войти в область порта, вручную введя маршрут /dashboard в окно URL-адреса браузера, я хочу, чтобы он мгновенно проверял, вошел ли пользователь в систему или нет.
Хотя в процессе создания учетной записи устанавливается переменная $_SESSION для вошедшего в систему пользователя, сразу после перенаправления на «/dashboard» (и, следовательно, мгновенной проверки той же переменной $_SESSION, которая была установлена миллисекунды назад), я могу в ответе проверки вы увидите, что эта конкретная переменная $_SESSION не установлена.
Так есть ли что-то особенное, что мне нужно учитывать при размещении серверной части на другом сервере?
Почему я так подчеркиваю другой сервер? Ну, мое приложение уже работало нормально. Раньше я работал с простым JS и простым PHP. С этим было легко работать, потому что весь мой проект был только что помещен в папку htdocs веб-сервера Apache XAMPP.
Я провожу рефакторинг своего приложения с простого JS на Vue 3.
Теперь все по-другому:
[*]Мой Vue CLI запускает веб-сервер для приложения vue на «localhost:8080» [*]Мой бэкэнд остается в htocs, потому что мне нужен сервер, на котором работает php на «localhost» [*]В JS (и Vue) я работаю с fetch(). В качестве конечной точки для Php я использовал относительный путь (поскольку все это было в одном каталоге проекта), например fetch("../src/backend/main.php"), и теперь я использую путь к локальному серверу, например fetch("http/localhost/backend/main.php") [*]Поскольку localhost:8080 для моего серверного интерфейса отличается от «localhost», я установил в своем серверном интерфейсе следующие заголовки: header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); header("Access-Control-Allow-Headers: Content-Type, Credentials"); сеанс_start();
Поскольку это единственные новые вещи, я предполагаю, что моя проблема связана с дополнительным сервером для моей среды разработки, но если вы увидите другую причину, дайте мне знать.
Я хочу подчеркнуть, что любая другая связь между интерфейсом и сервером работает отлично, просто у меня такое ощущение, что теперь сеансы обрабатываются по-другому, и мне хотелось бы знать, почему.
У меня общий вопрос по поводу обработки файлов cookie, если во время разработки вы работаете на двух серверах (один сервер для внешнего и внутреннего интерфейса). Я создал веб-приложение с системой входа в систему. Есть два основных пути:
"/" – это общедоступная целевая страница с возможностью входа в систему или создания учетной записи.
"/dashboard" — защищенная стартовая страница после входа в систему
Если вы зарегистрируетесь (создаете новую учетную запись), приложение автоматически войдет в систему (и, следовательно, перенаправит вас на «/dashboard»
Все это работает нормально. Чтобы пользователи не могли войти в область порта, вручную введя маршрут /dashboard в окно URL-адреса браузера, я хочу, чтобы он мгновенно проверял, вошел ли пользователь в систему или нет.
Хотя в процессе создания учетной записи устанавливается переменная $_SESSION для вошедшего в систему пользователя, сразу после перенаправления на «/dashboard» (и, следовательно, мгновенной проверки той же переменной $_SESSION, которая была установлена миллисекунды назад), я могу в ответе проверки вы увидите, что эта конкретная переменная $_SESSION не установлена.
Так есть ли что-то особенное, что мне нужно учитывать при размещении серверной части на другом сервере?
Почему я так подчеркиваю другой сервер? Ну, мое приложение уже работало нормально. Раньше я работал с простым JS и простым PHP. С этим было легко работать, потому что весь мой проект был только что помещен в папку htdocs веб-сервера Apache XAMPP.
Я провожу рефакторинг своего приложения с простого JS на Vue 3.
Теперь все по-другому:
[*]Мой Vue CLI запускает веб-сервер для приложения vue на «localhost:8080» [*]Мой бэкэнд остается в htocs, потому что мне нужен сервер, на котором работает php на «localhost» [*]В JS (и Vue) я работаю с fetch(). В качестве конечной точки для Php я использовал относительный путь (поскольку все это было в одном каталоге проекта), например fetch("../src/backend/main.php"), и теперь я использую путь к локальному серверу, например fetch("http/localhost/backend/main.php") [*]Поскольку localhost:8080 для моего серверного интерфейса отличается от «localhost», я установил в своем серверном интерфейсе следующие заголовки: header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); header("Access-Control-Allow-Headers: Content-Type, Credentials"); сеанс_start();
Поскольку это единственные новые вещи, я предполагаю, что моя проблема связана с дополнительным сервером для моей среды разработки, но если вы увидите другую причину, дайте мне знать.
Я хочу подчеркнуть, что любая другая связь между интерфейсом и сервером работает отлично, просто у меня такое ощущение, что теперь сеансы обрабатываются по-другому, и мне хотелось бы знать, почему.
Мобильная версия