Почему Chrome удаляет номер порта для localhost: 80? - PullRequest
0 голосов
/ 04 апреля 2019

Я делаю запрос из моего внешнего приложения React и запускаю его на моем сервере с localhost: 80. При просмотре запроса и заголовка в браузере Chrome автоматически удаляет номер порта, что вызывает ошибку CORS. Почему Chrome удаляет этот номер порта? Каковы лучшие практики в этом сценарии? Я просто изменил порт с 80 на 8080, и это решило проблему.

Я установил заголовки Access-Control-Allow-Origin для всех типов HTTP-запросов, и это, похоже, не решило проблему. Это также привело меня к мысли, что причиной отсутствия проблемы был порт, отсутствующий в заголовке запроса (поэтому я изменил его с 80 на 8080).

app.get('*', (req, res) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // If needed
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // If needed
    res.setHeader('Access-Control-Allow-Credentials', true);
}

здесь не работает порт

app.listen(80, err => {
  if (err) {
    return console.error(err);
  }
  console.log(

      =====================================================
      -> Server (${chalk.bgBlue('Hot reload')}) ? (running) on ${chalk.green(
      'localhost',
    )}:${chalk.green('80')}
      =====================================================
    ,
  );

^^ этот не работал, и chrome удалил порт в URL

изменил порт здесь

app.listen(8080, err => {
  if (err) {
    return console.error(err);
  }
  console.log(

      =====================================================
      -> Server (${chalk.bgBlue('Hot reload')}) ? (running) on ${chalk.green(
      'localhost',
    )}:${chalk.green('8080')}
      =====================================================
    ,
  );

^^ этот работал, и chrome покинул порт в URL

Я ожидал, что CORS разрешит выполнение запросов, даже если порт не указан, но этого не произошло. Я использую сервер node.js, использующий graphql для моего бэкэнда, фреймворк реагирования для моего внешнего интерфейса, а версия cors - "cors": "^ 2.8.4"

1 Ответ

0 голосов
/ 04 апреля 2019

Порт 80 является портом по умолчанию, уже используемым во всемирной паутине (www). Есть ли причина, по которой этот номер порта должен быть специально использован (для локальной разработки, я предполагаю)?

...