Топор ios пост застопорился в Chrome (CORS) - PullRequest
1 голос
/ 19 марта 2020

Я конвертирую код, который подключил AWS Lambda к nano express. Мой VueJS внешний интерфейс не передавал данные правильно, поэтому я начал вносить изменения, и теперь я вообще не могу добраться до бэкэнда, и я понятия не имею, почему.

Бэкэнд тривиален:

const nanoexpress = require('nanoexpress');
const app = nanoexpress();
app.post('/v1/authorizeUser', async (req) => {
    console.log(req);
    const { email, password } = req.body;
    console.log(email);
    return { status: 'Ok', body: req.body };
});   
app.listen(3000).then(r => console.log('started'));

Это оригинальный магазин. js код. Я могу отправить запрос из приложения Vue в Chrome, но он не анализируется правильно. Вероятно, из-за отсутствующего или неправильного типа контента

const axiosResponse = await axios.post(`${API_ENDPOINT}/authorizeUser`, JSON.stringify({
  email: payload.email,
  password: payload.password,
}));

и журнала сервера:

body: [Object: null prototype] {
 '{"email":"literak@seznam.cz","password":"centrum"}': ''
}
undefined

enter image description here

Когда я добавил Ax Опции ios, chrome показывает ошибку для этого запроса, но на сервере ничего нет.

 const options = {
   headers: {
     'Content-Type': 'application/json',
   },
 };
 const axiosResponse = await axios.post(`${API_ENDPOINT}/authorizeUser`, JSON.stringify({
    email: payload.email,
    password: payload.password,
 }), options);

Chrome запрос выглядит странно, раздел ответа отсутствует, заголовки запроса сильно различаются, и на вкладке Timing я вижу, что запрос остановлен.

enter image description here

Если я удаляю функцию stringify, она ведет себя так же:

const axiosResponse = await axios.post(`${API_ENDPOINT}/authorizeUser`, {
   email: payload.email,
   password: payload.password,
}, options);

И та же проблема без stringify и пользовательских опций:

const axiosResponse = await axios.post(`${API_ENDPOINT}/authorizeUser`, {
   email: payload.email,
   password: payload.password,
}, options);

Только первый вариант с stringify и без параметров достигает сервера. Я использую Почтальон, запрос обрабатывается сервером.

enter image description here

Журналы:

  body: { email: 'literak@seznam.cz', password: 'centrum' }
}
literak@seznam.cz

Топор ios последний Версия 0.19.2. Chrome также актуален. Я понятия не имею, почему другие комбинации не достигают сервера. Похоже, Chrome получил правильный запрос. Что может быть не так? Это сводит меня с ума.

Обновление: консоль

Error: Network Error
    at createError (createError.js?2d83:16)
    at XMLHttpRequest.handleError (xhr.js?b50d:83)

1 Ответ

1 голос
/ 19 марта 2020

CORS в nano express, по-видимому, известная ошибка :

const corsPerRoute = cors();
app.options('/my-route', corsPerRoute, () => {});

app.get('/my-route', corsPerRoute, (req, res) => {
  res.send('this route protected by your cors per-route config');
});
...