@vasIvas

Может ли сервер установить cookie серверу?

Вообще не понимаю о чем сейчас буду спрашивать, по этому если где-то будет "ну вообще глупость" скажите об этом чтобы направить в правильную сторону.
Мне нужно вот что - когда клиент делает запрос на сервер, он передает куку. У меня пререндер происходит на клиенте и прежде чем я пересмотрю возможность рендера авторизованного пользователя, хочу узнать, может ли сервер устанавливать другому сервере куку так же, как это бы сделал браузер?
То есть у меня с nodejs будут отправляться запросы к api на php которому и нужны те самые куки.

А если быть предельно точным то связка такая - nginx (domain.ru) => express.js (localhost) => nginx(api.domain.ru) => php(localhost).

И если так можно так сделать, то как?

Как просили, более подробно...
У меня сервер nodejs занимается пререндером изоморфного spa используя данные полученные от api на php. Для аутентификации пришлось использовать не совсем стандартный подход с jwt + cookie. И вот чтобы отпререндерить страницу для авторизованного пользователя на ноде, нужно эметировать работу браузера с куками.
  • Вопрос задан
  • 1584 просмотра
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Давайте определимся с терминами и понятиями.

Во взаимодействии по протоколу http всегда две стороны: клиент (инициатор запроса) и сервер (формирует ответ на запрос).

Куки - это просто http заголовки в запросе и ответе, которыми обмениваются клиент и сервер.

Соответственно, серверу совершенно неважно, кто на той стороне инициировал запрос - браузер, nodejs, что угодно. Он просто читает заголовки запроса и отдаёт ответ с какими-то другими заголовками. Проще говоря, сервер оперирует текстом запроса и формирует текст ответа. Что происходит с запросом до того, как он попал к нему и с ответом после отправки, сервер вообще не волнует.

Таким образом, вам просто нужно на стороне клиента (node) корректно обрабатывать то, что присылает сервер, и формировать правильные запросы, передавая туда все нужные заголовки. Именно это автоматически за нас делает браузер, например. Получается, что вам поведение браузера нужно эмулировать (не знаю есть ли в node какие-то готовые инструменты для этого).

Но всё это - буквальный ответ на ваш вопрос. Если вы более детально опишете свою задачу, может оказаться, что её можно более эффективно и правильно решить другими способами.
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Суть cookie в том, что она хранится не на стороне сервера, а на стороне клиента. Поэтому по сути - нельзя, чтобы сервер их генерировал.
Передаются cookie как обычные параметры, вместе с запросом от клиента к серверу.

Если вы хотите, чтобы всегда были какие-то cookie по умолчанию, то это делается другим способом - вы не же используете именно cookie как информацию, вы работаете с переменными, которые получаются из cookie. Поэтому делайте обработку переменных по умолчанию, давайте им нужные значения, если их не передал клиент.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
Вообще, если я понял, про что Вы, можно, чтобы сервер1 отправил клиенту заголовок Cookie, который бы установился для сервера2. В php у функции setcookie можно передать такой параметр.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы