Я уже несколько часов бьюсь головой о стену... перепробовал все типы комбинаций, чтобы заставить это работать.
У меня есть собственная конечная точка API: https://app.automate.mn/api/tools/email/add
На что я пытаюсь опубликовать данные со сторонних веб-сайтов.
app.js
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.options('*', cors());
...
const {addContact} = require('./routes/api/tools/email');
app.post('/api/tools/email/add', addContact);
addContact.js
addContact: async function (req, res) {
res.status(200).send('OK - TEST');
return;
}
Я настроил здесь тестовый сайт с формой: https://demoautomatemn.wpcomstaging.com/
Когда вы отправляете форму, она отправляет данные в конечную точку:
loadForm.js
automate_post_data('https://app.automate.mn/api/tools/email/add', data)
.then(data => {
console.log(data); // JSON data parsed by `data.json()` call
});
async function automate_post_data(url = '', data = {}) {
const response = await fetch(url, {
method: 'POST',
mode: 'cors', // no-cors, *cors, same-origin
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
//referrerPolicy: 'origin', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
body: JSON.stringify(data) // body data type must match "Content-Type" header
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status} - ${response.statusText}`);
}
return response.json();
}
Пост не работает:
Access to fetch at 'https://app.automate.mn/api/tools/email/add' from origin 'https://demoautomatemn.wpcomstaging.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
loadForm.js:109 POST https://app.automate.mn/api/tools/email/add net::ERR_FAILED
Я ожидал увидеть Access-Control-Allow-Origin в заголовках ответа для вызова OPTION, но ничего (Предварительная проверка не удалась). Я пробовал все, чтобы заставить его работать.
Любые предложения будут приветствоваться прямо сейчас.