Запрос не доходит до сервера node js

Использую следующий самый первый middleware.Из-за хэдера token первый запрос на сервер это OPTIONS запрос. По какой-то причине после перезагрузок как и клиента, так и сервера ИНОГДА недетерменированно запрос может дойти до "console.log("C")" и отправить статус 200

app.use(function(req, res, next) {
        console.log("A")

        res.setHeader("Access-Control-Allow-Origin", "*"); 
        res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, token");
        res.header('Access-Control-Max-Age', String(60 * 60 * 24 * 365));

        console.log("B")
        if(req.method === 'OPTIONS'){
          console.log("C")
          res.sendStatus(200);
          return res;
        }

        console.log("D")
        next();
      });

Но последующий GET или POST запросы не идут из-за сообщения

...has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Но если курлить

curl -I -X OPTIONS http://127.0.0.1:3003/handler

Всегда получаю нормальный ответ, в котором видны все нужные заголовки для CORS

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, token
Access-Control-Max-Age: 31536000
Content-Type: text/plain; charset=utf-8
Content-Length: 2
ETag: W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc"
Date: Sat, 28 Mar 2020 07:24:18 GMT
Connection: keep-alive

С GET, POST запросами аналогично через курл всё хорошо. Но через браузер(использую axios) не работает. Опять же, звучит бредово, но иногда что-то подправлю/перезагружу, то запрос может даже быть успешным, но когда дергаю следующую ручку, к примеру, /handler2, то всё опять падает.

Код клиента:

axios.defaults.baseURL = "http://127.0.0.1:3003";
axios.defaults.headers.common["token"] = window.localStorage.token;

window.axios = axios;
axios.post("/user/handler", postData).then(...).catch(...);

Не говорите, пожалуйста, про app.use(cors()) и app.options(...) )) Сижу над этим уже бог знает сколько, пробовал всё, что возможно. Но, судя по курлу, проблема какая-то с клиентом, а не сервером. Клиента пишу на React.js, естественно, axios.post обернут в функцию, которая вызывается при нажатии на кнопку, и почти всегда попадаю в блок catch, а не then.

(Порт клиента 3000, сервера 3003)


Ответы (0 шт):