CORS блокирует POST запросы, когда GET работает
1)Поднял локальный сервер на Express он слушает 3002 порт
2)Vue SLI стоит на порту 8080
Вполне логично что Cors будет блокировать запросы на разных постах, он так и делал.
Я прописал на GET запрос
res.setHeader("Access-Control-Allow-Origin", "http://localhost:8080")
и все работает.
вот слушатель
app.get('/api/lessonse', (req, res) => {
console.log("получил данные")
res.setHeader("Access-Control-Allow-Origin", "http://localhost:8080")
res.status(200)
const getLessonse = async () => {
try {
await client.connect()
console.log("Подключен к БД")
lessonse = client.db().collection('lessonse')
const lessonseArr = await lessonse.find().toArray();
res.send(JSON.stringify(lessonseArr))
}
catch (e) {
console.log(e)
}
}
getLessonse()
})
Как только я попробовал проделать тоже самое с POST запросом, CORS ругается и не дает отправить данные
слушатель
app.post('/api/lessonsee', (req, res) => {
res.status(200)
res.setHeader("Access-Control-Allow-Origin", "http://localhost:8080")
res.setHeader('Access-Control-Allow-Credentials', 'true');
console.log("получил данные")
})
Браузер выдает ошибку
Сам запрос во vue
async save() {
for (let i = 0; i < this.$refs.less.length; i++) {
this.$refs.less[0].pushLesson();
}
let res = await fetch("http://localhost:3002/api/lessonse", {
method: "POST",
headers: {
"Content-Type": "application/json;charset=utf-8",
},
body: JSON.stringify(),
});
let result = await response.json(this.newLessonseArrData);
console.log(result.message);
},
Ответы (1 шт):
Автор решения: Zulf
→ Ссылка
Помогло установка middleware cors :)
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.options('*', cors());
