Как перенаправить на другой домен с cookie в Express js

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

В своей функции маршрутизации я пишу следующий код
res.cookie ('fanws', 'value');
res.redirect (' http://hostname/path '); // другой сайт

Я использовал отладчик в Chrome и увидел, что cookie не добавляется на перенаправленной странице.

Я запускаю приложение на локальном хосте, а сайт, на который я перенаправляю, размещен на другом сервере в локальной сети.

Что я должен сделать, чтобы добавить куки на перенаправленный путь?

2 ответа

Короче говоря, вы не можете установить cookie-файл в браузере или прочитать cookie-файл для сайта, для которого вы не управляете сервером или у которого есть собственный код клиента на этой странице. Система cookie разработана специально для целей безопасности. Итак, со страницы или сервера для http://www.domain1.com, вы не можете читать или устанавливать куки для другого домена.

Если у вас есть код на страницах обоих доменов, вы можете передать некоторую информацию на вторую страницу (скорее всего, в качестве параметра запроса), которая сообщает коду на перенаправленной странице о необходимости выполнить какое-либо действие (например, установить cookie), но вы должен иметь возможность управлять Javascript или сервером на этой второй странице, чтобы иметь возможность сделать это.


Файл cookie в вашем коде nodejs передается по текущему запросу / ответу, что означает, что он связан с этим доменом в браузере, когда браузер обрабатывает ответ на текущий запрос.

res.redirect(...) возвращает 302 ответ с новым URL в качестве ответа на текущий запрос. Затем браузер видит этот код ответа и отправляет новый веб-запрос на новую страницу. Вы не можете установить куки с сервера для этого нового домена, если у вас также нет сервера для этого домена. Это фундаментальный аспект безопасности файлов cookie. К файлам cookie можно получить доступ только через Javascript в браузере со страницы с тем же источником, к которому принадлежат файлы cookie, и серверы могут устанавливать файлы cookie только для определенного источника в конкретном запросе, который они обрабатывают.

@jfriend00 хорошее объяснение. @Kiran G, вы можете передать параметр запроса в том же перенаправлении, нет необходимости устанавливать файлы cookie в экспресс, только что отправленном в параметре запроса, как показано ниже.

то есть

      res.redirect(`http://hostname/path?fanws=${value}`);
Другие вопросы по тегам