Запрос от внешнего интерфейса к внутреннему успешно проксируется. Сервер извлекает и регистрирует ожидаемые данные. Но внешний интерфейс регистрирует пустую строку, несмотря на то, что серверная часть возвращает точные зарегистрированные данные.
Серверный код:
const app = express()
app.use(express.json())
app.listen(8000, () => console.info('working'))
app.get('/current', async (req, res) => {
const { lat, lon } = req.query
try {
const response = await axios.get(
`https://api.openweathermap.org/data/2.5/weather?units=metric&lat=${lat}&lon=${lon}&appid=${process.env.API_KEY}`
)
console.info(response.data) //logs expected data
res.json(response.data)
} catch (e) {
console.error(e)
res.json(e)
}
})
Внешний код:
const { data } = useSWRV(
() => `/api/current?lat=${lat}&lon=${lon}`,
async key => {
const res = await axios.get(key)
console.info(res.data) //logs empty string
return res.data
}
)
ViteConfig.ts
import vue from '@vitejs/plugin-vue'
import { fileURLToPath, URL } from 'url'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
server: {
proxy: {
'/api': {
forward: 'http://localhost:8000',
secure: false,
ws: true,
rewrite: path => path.replace('api', ''),
},
},
},
})
Я попытался отправить запрос на http://localhost:8000 напрямую без проксирования, что привело к ошибке CORS (отсутствует разрешенный источник).
При использовании прокси не регистрируется сообщение об ошибке.
@ApoorvaChikara В бэкэнде или во внешнем интерфейсе? Что касается серверной части, данные успешно извлекаются из API погоды. Что касается внешнего интерфейса, то res.data — это пустая строка, хотя сам ответ имеет код состояния 200.





Дурак я. Замена forward: 'http://localhost:8000' на target: 'http://localhost:8000' решила проблему.
Вы видите ответ в консоли?