Laravel 5.1 с Set-Cookie

У меня проблема с Laravel 5.1. Когда мы добавили Set-Cookie: HttpOnly;Secure в наши заголовки, мы больше не можем перейти к нашему API. Мы не можем использовать API Laravel. Я думаю, что это уже исправлено в новой версии. Но я хочу исправить это в Laravel 5.1. Я не знаю, что сделать, чтобы это заработало.

Пожалуйста, опубликуйте сообщение об ошибке или все симптомы, с которыми вы столкнулись. Перед вами очень сложная система, и единственное, что вы сказали, это «она не работает». Если бы вы были врачом, и к вам подошел пациент и сказал: «Доктор, мое тело не работает. Как я могу заставить его работать?», что бы вы сказали?

ajon 06.02.2019 06:54

Сообщения об ошибках не отображаются. Просто мы не можем отправить данные в API. Он будет перенаправлять на свою страницу только после того, как мы отправим форму. Мы не отправляем форму с помощью javascript — мы используем лезвие laravel.

LordGrim 06.02.2019 08:53

Судя по всему, вам нужно лучше понять структуру и то, как работает код. Когда вы используете перенаправление, он отправляет в браузер http-код 302 вместе с URL-адресом для перенаправления. Затем браузер запросит эту страницу и загрузит ее. Все это происходит за кулисами, поэтому пользователь не замечает, что происходит. Вам нужно зайти в код и использовать точки останова, чтобы увидеть, какие значения находятся в разных точках вашего кода. С той информацией, которую вы предоставили, мы ничем не можем помочь.

ajon 06.02.2019 21:43

Я пытался использовать точки останова в своем контроллере, где моя форма должна быть перенаправлена ​​​​после отправки, и ничего не происходит. Он просто перезагружает всю страницу. Так что он не проходит через мой контроллер. Я также пытался показать сообщение об ошибке в своем обработчике исключений, если я могу что-то поймать, но тоже ничего не произошло. Я не знаю, как это поймать сейчас, потому что поведение должно быть - из формы, после отправки оно должно перенаправить на путь, который я указал в своей форме, и перейти к контроллеру. Поскольку в моем контроллере не отображается сообщение, оно не идет по пути в нашей форме.

LordGrim 07.02.2019 04:18

Когда я вижу в своей сети, я увидел, что страница, на которую я должен быть перенаправлен, имеет статус 302 Found.

LordGrim 07.02.2019 04:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
5
1 640
1

Ответы 1

Я понял теперь, в чем проблема. Мы устанавливаем заголовок «Set-cookie: httponly; secure» на сервере, поэтому xsrf-токен был удален. И я думаю, что именно из-за этого мы не можем продолжить отправку формы. Поэтому я добавляю следующий код в свой VerifyCsrfToken.php

protected function addCookieToResponse($request, $response)
{
    $response->headers->setCookie(
        new Cookie('XSRF-TOKEN',
            $request->session()->token(),
            time() + 60 * 120,
            '/',
            null,
            config('session.secure'),
            true)
    );

    return $response;
}

Проблема все еще существует, мы все еще не можем продолжить отправку формы. Я все еще получаю 302 Found, когда мы отправили форму.

Теперь это заголовок 2 Set-Cookie:

Set-Cookie: XSRF-TOKEN=<token>; expires=Thu, 07-Feb-2019 07:38:41 GMT; Max-Age=7200; path=/; secure; HttpOnly

Set-Cookie: laravel_session=<session>; expires=Thu, 07-Feb-2019 07:38:41 GMT; Max-Age=7200; path=/; secure; HttpOnly

Но почему мы все еще не можем отправить форму?

Другие вопросы по теме