2017-02-17 26 views
2

У меня есть реагировать приложение, которое делает выборки вызов к API следующим образом:Как использовать выборки размещать с содержанием типа приложения/JSON

postForm(state) { 
    var formData = state.formData; 
    return fetch('http://localhost:3000/api/V0.1/formSubmit', {method: 'POST', headers: {"Content-Type": "application/json"}, body: JSON.stringify(formData)}) 
    .then((response) => response.json()) 
    .then((responseJson) => { 
     console.log(responseJson); 
     return null; 
    }) 
    .catch((error) => { 
     console.error(error); 
    }); 
    } 

однако, он блокируется по CORS как спецификации что application/json является нестандартным типом контента.

Тем не менее, я не знаю, как я могу изменить свой запрос на получение для выполнения требуемого предполетного запроса, чтобы он разрешил приложение/json.

вызов API является:

app.post("/api/v0.1/formSubmit", function(req, res) { 
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080'); 
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 
    res.setHeader('Access-Control-Allow-Headers', '*'); 
    var formData=req.body; 
    console.log(formData); 
    res.status(200).json(formData); 
}); 

ответ

2

Прежде чем определить свой маршрут. declare

app.use(function(req, res, next) { 
     var oneof = false; 
     if(req.headers.origin) { 
      res.header('Access-Control-Allow-Origin', req.headers.origin); 
      oneof = true; 
     } 
     if(req.headers['access-control-request-method']) { 
      res.header('Access-Control-Allow-Methods', req.headers['access-control-request-method']); 
      oneof = true; 
     } 
     if(req.headers['access-control-request-headers']) { 
      res.header('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); 
      oneof = true; 
     } 
     if(oneof) { 
      res.header('Access-Control-Max-Age', 60 * 60 * 24 * 365); 
     } 

     // intercept OPTIONS method 
     if (oneof && req.method == 'OPTIONS') { 
      res.send(200); 
     } 
     else { 
      next(); 
     } 
    }); 

В CORS запрос проверяется на наличие доступных методов на сервере. т.е. в ОПЦИИ. Когда вы получите успешный ответ, вы сможете отправить запрос.

Вы также можете включить CORS для определенных страниц. здесь https://github.com/expressjs/cors

+0

Человек, который был быстрым и работает! Спасибо :) – Wayneio

+0

Вы можете отметить правильный ответ, чтобы помочь другим. –

+0

конечно - 8 минут Я должен ждать – Wayneio