Узел / Экспресс CORS POST дает 504 и 403 - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь создать очень простой сервер, который я могу запускать локально и подключаться к нему с другого сервера в Интернете, используя мой IP.

Я получил свой IP от https://www.whatismyip.com/

В нем перечислены 2 адреса - локальный и IPv4.Локальный работает нормально, когда я отправляю POST от почтальона.Я вижу свой журнал в терминале request from: chrome-extension://fdmmgi...

Но он не работает, когда я отправляю POST с другого сервера в Интернете - я не вижу никакого журнала в терминале, и мой журнал надругой сервер показывает 403 Forbidden

IPv4-адрес не работает ни почтальоном, ни сервером.Почтальон говорит the response status was 0., а в журнале с другого сервера - 504 gateway time-out

Какой IP-адрес я должен использовать, чтобы подключить его с помощью POST с другого сервера?И что я могу изменить в коде моего локального сервера (ниже), чтобы он работал?

const express = require('express');
const app = express();
const router = express.Router();
const port = 3000;


app.all('*', function(req, res, next) {

  // allow any origin
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET, POST');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

app.use('/', router);

router.get('/', (request, response) => {
  response.json({message: 'Hello, welcome to my server'});
});


router.post('/api/my/endpoint', (request, response) => {
  console.log('request from: ' + request.headers.origin);

  // trying agian to force cors to work
  response.setHeader('Access-Control-Allow-Origin', request.headers.origin);

  response.json({message: 'hi, welcome to my server'});
});

app.listen(port, () => console.log(`Listening on port ${port}`));

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Я смог заставить его работать, используя ngrok https://github.com/bubenshchykov/ngrok/

0 голосов
/ 09 октября 2018

Если ваш сервер находится за сетевым маршрутизатором, другой сервер в Интернете может не получить к вам доступ через общедоступный IPv4.Вы можете настроить хост NAT или DMZ на своем маршрутизаторе, если он поддерживает.

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

...