El método Fetch API Post no funciona

fetch('http://localhost:9000/api/app/contact', {
    method: 'POST',
    headers: {
        'content-type': 'application/json'
    },
    body: JSON.stringify({
        email: this.state.email,
        contactNumber: this.state.phone,
        enquiry: this.state.msg
    })
})
.then(function(res) { return res.json() })
.then(function(data) {
    alert('We will contact you shortly') 
});

Cuando renderizo la codificación anterior, he encontrado el siguiente error:

Falló al cargarhttp: // localhost: 9000 / api / app / contact: La respuesta a la solicitud de verificación previa no pasa la verificación de control de acceso: No hay encabezado 'Access-Control-Allow-Origin' en el recurso solicitado. Origen 'http: // localhost: 8080'por lo tanto, no se permite el acceso. Si una respuesta opaca satisface sus necesidades, configure el modo de solicitud en 'no-cors' para recuperar el recurso con CORS deshabilitado.

Pero cuando lo intenté con cartero, está funcionando con éxito. Ayúdenme, ¿falta algún código en mi API de recuperación?

A continuación se encuentra la solicitud y el código POST del cartero.

El siguiente código es Publicar solicitud dePostman.

var data = JSON.stringify({
  "email": "[email protected]",
  "contactNumber": "0123456789",
  "enquiry": "Testing"
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://localhost:9000/api/app/contact");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.setRequestHeader("postman-token", "d5e08b69-5f0f-8193-e021-e2c3b1bfe1a3");

xhr.send(data);

En el lado del servidor NodeJS, ya tengo CORS en el back-end.

var express = require('express'),
    controller = require('./app.controller'),
    router = express.Router(),
    cors = require('cors');

var issue2options = {
  origin: true,
  methods: ['POST'],
  credentials: true,
  maxAge: 3600
};

router.post('/contact', cors(issue2options), controller.sendContactForm);
module.exports = router;

Respuestas a la pregunta(2)

Su respuesta a la pregunta