Я развертываю простой сервер узлов и приложение React для Netlify. Приложение React отправляет запрос API на сервер и использует cors через const cors = require("cors");
в версии 2.8.5.
Сначала я указал следующее (server.js)
app.use(
cors({
origin: CLIENT_ORIGIN
})
);
, который, кажется, только сообщает серверу «Я использую CORS», но конкретно не устанавливает никаких заголовков и не разрешает веб-сайтам из белого списка доступ к серверу. Затем я устанавливаю CLIENT_ORIGIN
в файле .env в моей среде разработки и через Build environment variables
в Netlify. Я развернул новую сборку как для сервера, так и для внешнего интерфейса, однако, должно быть, я где-то ошибся:
Access to fetch at 'https://serverUrl.com/example/get' from origin
'https://react-app-example.com' has been blocked by CORS policy: 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.
Затем я попытался установить:
app.use(function(req, res, next) {
res.header(
"Access-Control-Allow-Origin",
"https://react-app-example.com"
);
res.header("Access-Control-Allow-Headers", "Content-Type,Authorization");
res.header("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE");
if (req.method === "OPTIONS") {
return res.sendStatus(204);
}
next();
});
, который также не работал. Сообщение об ошибке осталось прежним. Что меня раздражает, так это то, что у меня есть аналог, созданный несколько месяцев назад, который построен очень похожим образом, но остается на герою. Те же методы, что описаны выше, работают без проблем.
Что мне не хватает?