Отказано в запросе локального хоста Windows 10

#javascript #php #node.js #windows #localhost

#javascript #php #node.js #Windows #локальный хост

Вопрос:

Проблема:

Я запускаю PHP-скрипт (с использованием Lumen Framework) в Windows 10, прослушивая запрос на localhost:8090 .

  • Когда я отправляю GET запрос с помощью Postman, он возвращает ответ, который я хочу.
  • Когда я отправляю запрос с помощью curl терминала, я получаю желаемый ответ.
  • Но когда я отправляю запрос из своего кода Javascript (используя Fetch или Axios), я получаю сообщение об ошибке Error: connect ECONNREFUSED 127.0.0.1:8090 .

Что я уже сделал:

Я уже пытался отключить брандмауэр Windows и защитник Windows 10, но это не решило проблему. Я попытался выполнить все эти действия на недавно установленной Windows 10, результат был тот же.

Я пытался разрешить порт на брандмауэре, но это все равно не помогло.

Я также пробовал использовать Node-Fetch и Axios, это не помогло.

Коды:

Код Javascript:

 const axios = require("axios")

console.log("Sending the request...")

axios({
    url: 'http://localhost:8090',
})
.then(res => {
    console.log("res arrived")
})
.catch(err => {
    console.log("err happened", { err })
})

console.log("Request sent")
  

Команда терминала PHP для запуска приложения Lumen:

 php -S localhost:8090 -t public
  

Краткие сведения

Итак, приложение Lumen запущено, поскольку я могу получить ответ с помощью Postman и Curl. Это не работает только с использованием Javascript.

Комментарии:

1. Напрямую введите localhost: 8090 в строку URL в браузере и проверьте, работает ли он.

2. возможно, какие-либо журналы ошибок и т.д. Доступны на стороне сервера?

3. Как насчет того, чтобы попробовать другой порт? На вашем 8090 могло быть запущено что-то еще. Вы также можете сначала отключить порт, а затем перезапустить свой сервер

4. Я попытался ввести непосредственно в браузер, конечно, это работает. Я сообщаю о более подробной ошибке в своем следующем комментарии. Порт не используется, я перепробовал много разных портов, но все еще не работал.

Ответ №1:

Я не совсем уверен, почему это исправляет ошибку, но попробуйте, чтобы ваш PHP-скрипт явно прослушивал 127.0.0.1 вместо localhost. Это устранило проблему, с которой вы столкнулись выше. Я подозреваю, что термин «localhost» по-разному интерпретировался PHP (и Postman, curl, браузером и т.д.) И клиентом JS. Но при явном указании 127.0.0.1 двусмысленности не возникает.

 $ php -S 127.0.0.1:8090