webpack-dev-server устанавливает cookie через прокси - PullRequest
1 голос
/ 30 мая 2019

Мы настроили нашу среду разработки с помощью webpack-dev-server.Мы используем его прокси-конфигурацию для связи с бэкэндом.

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

const config = {
  devServer: {
     index: "/",
     proxy: {
     "/rest_end_point/page": {
           target: "https://middleware_server",
           secure : false
     },         
     "/": {
           target: "https://middleware_server/app/login",
           secure : false
    },        
}

Конечная точка https://middleware_server/app/login возвращает страницу входа с заголовком set-cookie.

Прокси-сервер используется, чтобы избежать ошибок CORS при доступе к страницам входа иВызовы API.

До этого момента код из приложения не выполнялся.Нужно ли что-то делать на странице входа в coomon, чтобы получить набор файлов cookie?

приложение написано с помощью React.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 30 мая 2019

У меня такой же вариант использования, и это то, что я сделал.

В моем случае у меня есть несколько сборок, поэтому я настроил JSON и получил оттуда JSESSIONID Id.

Примечание. Этот подход не является динамическим. Вы должны войти в приложение, где вы хотите, чтобы ваше приложение прокси, а затем вручную рис JSESSIONID и добавьте его в файл JSON или замените непосредственно в onProxyReq и затем запустите ваш сервер разработки.

 // Webpack-dev.js
const ProxySession = require("./ProxySession");

config = {
  output: {..........},
  plugins: [.......],
  resolve: {......},
  module: {
    rules: [......]
  },
  devServer: {
    port: 8088,
    host: "0.0.0.0",
    disableHostCheck: true,
    proxy: {
        "/service/**": {
            target: ProxySession.proxyTarget,
            changeOrigin: true,
            onProxyReq: function(proxyReq) {
                proxyReq.setHeader("Cookie", "JSESSIONID=" + ProxySession[buildType].JSESSIONID + ";msa=" + ProxySession[buildType].msa + ";msa_rmc=" + ProxySession[buildType].msa_rmc + ";msa_rmc_disabled=" + ProxySession[buildType].msa_rmc);
            }
        },
        "/j_spring_security_check": {
            target: ProxySession.proxyTarget,
            changeOrigin: true
        },
        "/app_service/websock/**": {
            target: ProxySession.proxyTarget,
            changeOrigin: true,
            onProxyReq: function(proxyReq) {
                proxyReq.setHeader("Cookie", "JSESSIONID=" + ProxySession[buildType].JSESSIONID + ";msa=" + ProxySession[buildType].msa + ";msa_rmc=" + ProxySession[buildType].msa_rmc + ";msa_rmc_disabled=" + ProxySession[buildType].msa_rmc);
            }
        }
    }
}

И этот JSON-файл proxySession.

{
  "proxyTarget": "https://t.novare.me/",
  "build-type-1": {
     "JSESSIONID": "....",
     "msa": "....",
     "msa_rmc": ...."
   },
   "build-type-2": {
       "JSESSIONID": ".....",
       "msa": ".....",
       "msa_rmc":"....."
   }
}
...