Ответ из Express на запрос из другого домена
На ноде подключён express
с таким кодом:
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors())
app.listen(3000, () => {
console.log('server started')
})
app.get('/', (req, res)=> {
res.send('{a:1}');
})
Клиент запущен на местном VSCode порт 5500 с livereload. Node+Express запущен на этой же машине на порту 3000 В файле index.html клиента есть кнопка с обработчиком: Пытаюсь получить запрос из express с другого порта, по определению из другого домена.
getBtn.onclick =() => {
fetch('http://localhost:3000/')
.then(res => {
return res.text();
}).then((txt)=>{
console.log(txt);
})
}
При клике запрос обрабатывается, и нода отправляет res, но клиенту прилетает undefined. Если в консоль вместо res.text() получать res .then(res => {console.log(res)})
, то в консоль прилетает объект с body:null
, stasus: 0
, ok: false
, однако, в консоли на вкладке network>Preview
ответ {a:1}
, Response в статусе 200
, ok: true
Почему ответ на клиенте пустой?
(UPD) В комментариях были подсказки, код сейчас работает, вопрос поправлен.
Источник: Stack Overflow на русском