#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