отправить запрос в Express.js API с другого компьютера - PullRequest
1 голос
/ 13 мая 2019

У меня есть сервер, работающий на localhost: 3000, и я настроил свой app.js для использования углового маршрутизатора при попытке доступа к localhost: 3000 в моем браузере
(пример: app.use('/', express.static(path.join(__dirname, '/dist/Client')));)

Когда я отправляю запрос к моему API, я делаю:

const headers = new Headers({
  'Content-Type': 'application/json'
});

const options = new RequestOptions({
   headers: headers
});

this.http.post('http://localhost:3000/api/someAction',{body},options)
.toPromise()
.then(//function)

До сих пор все правильно, но как я могу сделать свой сервер доступным с другого компьютера.Например, если другой компьютер в той же сети знает частный IP-адрес сервера, я хочу, чтобы он мог получить доступ к моему приложению, когда он перейдет, например, к 192.168.1.10:3000.Прямо сейчас я могу получить доступ, но все мои запросы http терпят неудачу, и у меня есть следующая ошибка

Access to XMLHttpRequest at 'http://localhost:3000/api/someFunction' 
from origin 'http://192.168.1.10:3000' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: It does not 
have HTTP ok status.

В app.js у меня есть следующее:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
  next();
});

1 Ответ

0 голосов
/ 13 мая 2019

Это сообщение об ошибке CORS, которое вы получаете.

Вы можете использовать промежуточное программное обеспечение Express CORS, чтобы разрешать вызовы из других источников на ваш сервер. Убедитесь, что вы выбрали правильные опции, чтобы разрешить звонки с другого компьютера

https://expressjs.com/en/resources/middleware/cors.html

А также убедитесь, что промежуточное программное обеспечение CORS находится в верхней части определения вашего приложения.

const app = express();
app.use(cors({ origin: "*" })); // Do this first
//... the rest of your routes and handlers and middlewares

С вашего локального компьютера, где кажется, что все работает правильно, откройте Chrome Dev Tools и убедитесь, что OPTION вызовы выполняются и успешно выполняются, и что возвращаются правильные заголовки.

Наконец, с точки зрения безопасности, удалите или ограничьте параметры CORS, насколько это возможно для вашей производственной среды. Используйте гибкую политику CORS только во время разработки и тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...