Как перенаправить на другой домен с 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}`);