Я пытаюсь вызвать экспресс-маршрутизатор ('/') из fetch api в режиме реакции в рабочем режиме, но он не работает.
Я использую общий сервер, так как использую представления реакции в виде статических файлов и выполняю рендеринг следующим образом:
if(process.env.NODE_ENV == 'production'){
app.use(express.static(`${__dirname}/client/build`));
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname+'/client/build/index.html'));
});
}
Кроме того, я уже пытался использовать имя рабочего узла в качестве маршрута в fetch, но это не работает для меня, так как я использую прокси.
Полная история в том, что я пытаюсь получить некоторые токены, которые я получаю от аутентификации oauth-прокси openshift. Есть два контейнера, один для прокси и другой для моего веб-приложения. Когда пользователь проходит аутентификацию, прокси-сервер отправляет токен на localhost: 8080 (это мое веб-приложение).
Я справляюсь с этим,
app.get('/', function (req, res) {
if (req.headers !== undefined && req.headers['x-forwarded-access-token'] !== undefined && req.headers['x-forwarded-user'] != undefined) {
userDetails.accessToken = req.headers['x-forwarded-access-token'];
userDetails.username = req.headers['x-forwarded-user'];
req.session.token = userDetails.accessToken;
req.session.username = userDetails.username;
res.send({ accessToken: userDetails.accessToken, username: userDetails.username});
}
});
Но когда я вызываю вышеупомянутый маршрутизатор из fetch api от реагирования, я не получаю ответ. Приложение вылетает.
Когда я запускаю его в среде разработки, я работаю как на разных серверах, так и когда я пишу его полностью, например 'fetch('http://localhost:3001')
'
тогда это работает.
Я хочу, чтобы он работал и на производстве. Любая помощь?
Подробнее
В целом я развернул свое приложение реагирования в openshift. Я использую oauth-proxy для аутентификации пользователя, а затем подключаюсь к моему приложению реагирования, когда прокси-сервер отправляет мне маркер аутентификации в приложении реагирования.
В модуле прокси-приложения есть два контейнера, прокси и веб-приложение. Когда я перехожу к маршруту модуля, он переходит на страницу входа в keycloak, где я ввожу свои учетные данные, после проверки подлинности прокси-сервер отправляет токен авторизации в заголовках в свой контейнер с коляской, который является моим веб-приложением (работает на localhost). : 8080 внутри модуля.) Прокси-сервер отправляет заголовки в localhost:8080/
(веб-приложение), которое является корнем веб-приложения. Теперь здесь я должен сделать запрос на выборку от клиента к этому маршруту и получить токен (чего я не могу, так как он не работает таким образом, вероятно, потому что я использую прокси, который работает на другом хосте, чем мой веб приложение). Но когда я делаю запрос на других маршрутах, таких как ('/ api / xyz'), это работает как шарм. Что-то с корневым маршрутом и прокси-сервером создает проблему.