Запрос POST обхода прокси-сервера DevServer всегда возвращает 404 не найден - PullRequest
0 голосов
/ 24 сентября 2018

Версия WebPack "version": "3.12.0" Версия DevServer "version": "2.11.3"

Ниже приведен фрагмент кода, как я настроил свой прокси DevServer.Он работает для запроса GET, который возвращает требуемые данные выборки, но не работает для конечной точки feedback через POST.POST запрос к /feedback всегда возвращает 404.Однако, когда я изменяю method === 'POST' на GET, он снова начинает работать.

Я подтвердил, что ветвь достижима при отправке POST запроса на /feedback, бросив Error('method: ${method}; url: ${url}') внутриветвь.

const proxyDummy = {
    '/': {
        bypass: (req) => {
            const { url, method } = req;

            if (method === 'GET') {
                switch (url) {
                    case '/data':
                        return SAMPLE_DATA.DATA; // JSON file path (Working)
                    default:
                        break;
                }
            }

            if (method === 'POST') {
                switch (url) {
                    case '/feedback':
                        return SAMPLE_DATA.FEEDBACK; // JSON file path
                    default:
                        break;
                }
            }

            return false;
        }
    }
};

Сделал еще одну попытку с обычными состояниями конфигурации маршрутов прокси в doc,

const proxyDummy = {
    '/data': {
        target: generateURLFrom(SAMPLE_DATA.DATA),
        pathRewrite: { '^/data': '' }
    },
    '/feedback': {
        target: generateURLFrom(SAMPLE_DATA.FEEDBACK),
        pathRewrite: { '^/feedback': '' },
        bypass: (req, res, proxyOption) => {
            if (req.method !== 'POST') return false;
        }
    }
};

1 Ответ

0 голосов
/ 24 сентября 2018

Пока не копаюсь в исходном коде DevServer, но я предполагаю, что настройка прокси-сервера с использованием приведенного выше конфигурационного кода не только работает для запроса GET, прокси-сервер под ним - express, поэтому настройте прокси-сервер, как показано нижепросто работа

const proxyDummy = {
    '/': {
        bypass: (req, res) => {
            const { url, method } = req;

            if (method === 'GET') {
                switch (url) {
                    case '/data':
                        return res.send('');
                    default:
                        break;
                }
            }

            if (method === 'POST') {
                switch (url) {
                    case '/feedback':
                        return res.send();
                    default:
                        break;
                }
            }

            return false;
        }
    }
};
...