Когда мы развиваем Vue, React и другие проекты с помощью WebPack для конфигурации проекта, Запрашивание данных в режиме разработки будет включать в себя devserve.proxy, предусмотренный в нем, обратное проверенное проверенное промежуточное программное обеспечение Node.js.
Прокси Node.js просты. Простая настройка соединений промежуточного ПО прокси-сервера, экспресс, синхронизация браузера и многое другое. Из-за своей простоты небольшая деталь, которую разработчики легко упускают из виду.Адрес отдаленно похож
Пример
Например, в проекте есть два обратных прокси:
A: http://192.168.1.100:80
B: http://192.168.1.135:80
Порт игнорируем, в это время A и B проксируют на разные сервера. Добавим такой псевдоним к адресу прокси следующим образом:
proxy: {
'/api': {
target: 'http://192.168.1.100:80', // A Server
changeOrigin: true,
pathRewrite: {'^/api': '/api'}
},
'/api135': {
target: 'http://192.168.1.135:80', // B Server
changeOrigin: true,
pathRewrite: {'^/api135': '/api'}
}
}
/api Адрес /api на прокси-сервере A
/api135 /api-адрес под прокси-сервером B
Но если вы добавите его в этом порядке, есть скрытая яма правил именованияАдрес отдаленно похож
Предположим, когда мы посещаем / API135 / ABC, это реальный адрес B Server / API / ABC. В это время WebPack будет первым Match / API, а затем найдите конфигурацию прокси / API и, наконец, генерируют адрес сервера / API135 / ABC.
Здесь вы можете спросить, почему не адрес /api/xxx?
В это время Webpack только начал регулярно сопоставлять путь URL-адреса, то есть /^/xxx/, а затем запрашивать /api, но /api135 без изменения начального псевдонима. Сначала поймите, что объект цикла функции js зацикливается в порядке записи. Таким образом, за добавленным выше /api следует /api135.
Кратко продемонстрируйте процесс
const pathname = "/api135/abc"; // 输入的地址
const alias = "/api" // 代理别名
const targetAndPath = " http://192.168.1.100:80/api" // 代理地址:服务器+路径
const reg = RegExp("^"+alias); // 如果通过
if (reg.test(pathname)) { // 通过
return pathname.replace(RegExp("^" + alias), targetAndPath); // http://192.168.1.100:80/api135/abc
}
// 不通过 迭代下一个
решить
Для решения этой проблемы таблица конфигурации прокси в проекте может быть отсортирована и записана только в порядке убывания имен, либо может быть изменен алиас, не относящийся ко всем совпадениям. следующим образом:
proxy: {
'/api135': {
target: 'http://192.168.1.135:80', // B Server
changeOrigin: true,
pathRewrite: {'^/api135': '/api'}
},
'/api': {
target: 'http://192.168.1.100:80', // A Server
changeOrigin: true,
pathRewrite: {'^/api': '/api'}
}
}
наконец
Если вы этого не понимаете, большинство студентов будут использовать основные Vue, React и другие фреймворки при настройке с помощью webpack.
Здесь я использую Vue в качестве примера. Другие фреймворки аналогичны, похожи на отношения между динамической маршрутизацией Vue и статической маршрутизацией, /about/tom и /about/:name.Чтобы соответствовать статической маршрутизации, вам часто нужно добавить его перед динамическая маршрутизация.
также равно
/api135
/api:path
*Заявление об авторских правах: эта статья является оригинальной и не может быть воспроизведена без разрешения.