CORS на сервере restify доставляет мне проблемы - PullRequest
0 голосов
/ 04 октября 2019

У меня есть RESTIFY api, запущенный на Raspberry pi. Это IP статический на 192.168.1.12. Я также хочу запустить веб-сервер с create-react-app, к которому у меня есть доступ и который получает информацию из API.

  • RESTify - 192.168.1.12:8080
  • create-реакции-приложение: 192.168.1.12:3000

create-react-app:

axios.get(`http://localhost:8080/ping`).then(
    (response) => {
        console.log(`response received!`);
    }
).catch(
    (error) => {
        console.error(`error received from axios`);
    }
);

RESTify (при настройке сервера):

const corsMiddleware = require('restify-cors-middleware');
const cors = corsMiddleware(
    {
        origins: [
            '*'
        ]
    }
);
server.pre(cors.preflight);
server.use(cors.actual);
server.get(`/ping`, (req, res) => res.send(200));

Пока явсе еще не может получить create-react-app для доступа к серверу. Что я тут не так делаю?

Ответы [ 3 ]

1 голос
/ 04 октября 2019
 res.header('Access-Control-Allow-Origin', 'localhost'); //replace localhost with actual host
    res.header('Access-Control-Allow-Methods', 'OPTIONS, GET, PUT, PATCH, POST, DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Authorization');
1 голос
/ 04 октября 2019

Если вы используете Expressjs, тогда Вы можете использовать.

npm install cors
var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

Или Вы можете использовать промежуточное ПО

//CORS middleware
var corsMiddleware = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', 'localhost'); //replace localhost with actual host
    res.header('Access-Control-Allow-Methods', 'OPTIONS, GET, PUT, PATCH, POST, DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Authorization');

    next();
}

app.use(corsMiddleware); 
0 голосов
/ 05 октября 2019

restify on port 8080:

const corsMiddleware = require('restify-cors-middleware');

const cors = corsMiddleware({origins: ['*']});
server.pre(cors.preflight);
server.use(cors.actual);
server.get('/ping', (req, res) => { console.log('pinged'); res.send(200, 'hello') });

CRA on port 3000:

Файл package.json:

"proxy": "http://localhost:8080"

Файл App.js:

fetch('/ping', { accept: 'application/json' }).then(data => data.json()).then(json => console.log(json));

Источник: Здесь

...