Я хочу сделать вызов AJAX в Javascript для моего API ExpressJS Rest.

Однако с Javascript POST-вызов не работает.

В Postman работают те же JSON-данные с теми же заголовками.

Это ошибка в js (ajax):

cross-origion Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.10.106:8080/api/cart/. (Reason: CORS header 'Access-Control-Allow.Origin' missing) 

Это ошибка в node.js:

 SyntaxError: Unexpected token c in JSON at position 0 at JSON.parse ({amp}lt;anonymous{amp}gt;) 

Cors включены. Заголовки устанавливаются в AJAX (Content-Type, …)

API-код:

 const express = require('express'); const app = express(); var cors = require('cors'); app.use(express.json()); app.use(cors()); app.options('*', cors()); app.all('/*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); res.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.post('/api/cart', async (req, res) ={amp}gt; { res.send(true); }); app.listen(8080, () ={amp}gt; { console.log('Example app listening on port 8080!'); }); 

AJAX-код:

 $.ajax({ url:"http://192.168.10.106:8080/api/cart/", type:"POST", //First change type to method here headers: { 'X-Requested-With': 'XMLHttpRequest', 'Accept': '*/*', 'Cache-Control':'no-cache', }, contentType: "application/json; charset=utf-8", data:{ JSON.stringify(cart) }, success:function(response) { }, error:function(data, data1, data2){ console.log(data1); alert("An Error occurred. Try again later"); } }); 

Я ожидаю, что post-api будет выполнен с этим кодом ajax.

Однако, это не так. Есть идеи?

Я думаю, что вам нужно изменить AJAX на это:

 $.ajax({ url:"http://192.168.10.106:8080/api/cart/", type:"POST", //First change type to method here headers: { 'X-Requested-With': 'XMLHttpRequest', 'Accept': '*/*', 'Cache-Control':'no-cache', }, contentType: "application/json; charset=utf-8", data: JSON.stringify(cart), success:function(response) { }, error:function(data, data1, data2){ console.log(data1); alert("An Error occurred. Try again later"); } }); 
  $.ajax({ url:"http://192.168.10.106:8080/api/cart/", type:"POST", //First change type to method here headers: { 'X-Requested-With': 'XMLHttpRequest', 'Accept': '*/*', 'Cache-Control':'no-cache', "contentType": "application/json; charset=utf-8" }, data:{ "itemId": 1234 }, success:function(response) { console.log(response); }, error:function(data, data1, data2){ console.log(data1); alert("An Error occurred. Try again later"); } }); 

Замените ваш AJAX-код приведенным выше кодом