2016-11-03 2 views
1

У меня есть 2 отдельных приложения, назовем их Login & Dashboard. В обоих приложениях есть пользовательский интерфейс, написанный в режиме реагирования, и экспресс-сервер.Экспресс js Перенаправление cookies не отправлено

В моем приложении для входа, когда я делаю POST из моего пользовательского интерфейса входа, он попадает на сервер Login Express для аутентификации. После проверки подлинности, я установил печенье и перенаправлять на мой Dashboard URL:

res.cookie(cookie.key, cookie.access_token, { 
     path: '/', 
     domain: cookie.domain, 
     httpOnly: true, 
     maxAge: cookie.rememberExpiry 
    }) 

res.redirect(dashboard_url) 

Однако, когда я использую req.cookies в моей приборной панели приложение, которое я не вижу печенье.

Когда я делаю POST из моего Вход UI я действительно вижу вызовов сети с указанием заголовка ответа:

Set-Cookie: mycookie=cookievalue; Max-Age=28800; Domain=.local.myurl.com; Path=/; Expires=Thu, 03 Nov 2016 19:20:39 GMT; HttpOnly

Обратите внимание, что по состоянию на данный момент времени является 3 ноября 2016, 11:28 GMT так что это не вопрос истечения срока действия.

Чтобы проверить, я редактировал файл моих хостов таким образом, чтобы login.local.myurl.com & dashboard.local.myurl.com указывал на localhost.

Есть ли причина, по которой req.cookies недоступны в экспресс-приложении Dashboard?

+0

Вы можете видеть, как файлы cookie отправляются с запросом? Является ли запрос, для которого cookie не установлен «обычным» запросом или запросом XHR? – robertklep

+0

Что вы подразумеваете под «Можно ли увидеть, как файлы cookie отправляются с запросом»? Я ничего не вижу, когда я записываю 'req.cookies' в свой экспресс-сервер на панели инструментов. Iny мой пользовательский интерфейс входа в систему, когда я отправляю сообщение на сервер Login Express, я вижу на моей вкладке chrome network: POST 302, найденный с набором заголовков ответов –

+0

На вкладке «Сеть» просмотрите запрос, сделанный из панели мониторинга, и проверьте, содержит ли этот запрос 'Cookie' (чтобы исключить, что промежуточное программное обеспечение' cookie-parser' не используется должным образом). – robertklep

ответ

1

Моя проблема была 2 раза.

Сначала мне нужно было установить credentials: 'same-origin' на fetch, то есть я должен был разрешить куки-файлы сохраняться в библиотеке запросов, которую я использовал.

Во-вторых, поскольку мой сервер и мой клиент по существу отделены друг от друга, перенаправление на сервере не имело предполагаемого эффекта на клиенте. Следовательно, я не мог просто res.redirect от ответа сервера. вместо этого я заменил строку res.redirectres.status(200).send() и в моем клиентском коде я просто сделал window.location.replace('http://dashboardurl.com').

Надеюсь, что это поможет любому, у кого есть эта проблема в будущем.

Смежные вопросы