Не могу сделать fetch запрос с методом PUT и POST

Когда делаю fetch запрос на сервер, все хорошо, но как только я делаю POST или GET запрос с телом, все рушится, помогите пожалуйста, если что, все на локал хосте, на разных портах, про CORS знаю, с этим разобрался. Основная проблема в том, что если в запросе есть тело, он даже до сервера не доходит. Фронт на чистом HTML CSS JS, бэк на чистом node.js(и express)Также прилагаю все нужное:

функция для запроса с фронтенда:

async function Connect(endpoint, data){
  try{
    let response = await fetch(url + endpoint,{
        method: "PUT",
        mode: "no-cors",
        headers: {
          "Content-Type": "application/json"
        },
        body: JSON.stringify(data)
    }
  );
    if (response.status !== 200) {  
      console.log('Looks like there was a problem. Status Code: ' +  
        response.status);  
      return;  
    }
      
      let resp = await response.json();
      return resp
      
  }
  catch(e){
    console.log('Fetch Error :-S', e);  
  }
}

код сервера:

const os = require("os");
const http = require("http");
const express = require("express");
     
const app = express();
app.use(express.json());
   
app.use(express.static("public"));



app.put("/users/test", function(req, res){
    console.log("lol")
    res.setHeader('Content-Type', 'application/json');
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true)
    
    // if(!req.body) return res.sendStatus(400);
    console.log(req.body);
    
    res.send("ok")
});

    
app.listen(5000, function(){
    console.log("Сервер ожидает подключения...");
});

ошибка в консоли браузера:

Fetch Error :-S TypeError: Window.fetch: Invalid request method PUT.

изменено: сказали, мол, надо выключить no-cors mode, в нем нет метода пут, но во-первых, если изменить пут на пост, ничего не изменится, а во вторых, если выключить no-cors mode, будет выдаваться ошибка

Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://127.0.0.1:5000/users/lol. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»). Код состояния: 200

Учитывая то, что эндпоинт /users/lol предусматривает корс, такая ошибка обозначает, что fetch не доходит до сервера(об этом я писал ранее), но почему? А может и не это значит и я ошибаюсь.


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

Автор решения: Anvarjon

Я ваш код запустил Chrome и получил явный ответ на ваш вопрос:

TypeError: Failed to execute 'fetch' on 'Window': 'PUT' is unsupported in no-cors mode..

Вот исправный код:

await fetch(url + endpoint,{
  method: "PUT",
  mode: "cors",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(data)
});
→ Ссылка