Ну, я, наконец, получил его на работу как-то. Но, честно говоря, я не понимаю. Он определенно был связан с localhost
не таким же, как 127.0.0.1
. Как это закончилось таким образом, у меня нет подсказки ...
Я расскажу, что я узнал, делая это, так как не нашел реального ответа для отладки этого персонала в Интернете. Вот что я узнал:
- пехотинец имеет
--verbose
вариант, который может помочь вам увидеть, что происходит на
Если пехотинец-подключения прокси правильно настроен, вы должны увидеть что-то вроде этого при запуске:
Running "configureProxies" task
Proxy created for: /api/v1 to localhost:8000
В моем случае сервер grunt работал на 127.0.0.1:9000
, второй сервер - на localhost:8000
. Я проксируемые просьбы на api/v1
так grunt server --verbose
будет выводить что-то подобное на каждый проксируемом запросу:
Proxied request: /api/v1/test -> http://localhost:8000/api/v1/test
{
"host": "127.0.0.1:9000",
"connection": "keep-alive",
"accept": "...",
"user-agent": "...",
"accept-encoding": "...",
"accept-language": "...",
"cookie": "..."
}
- весь смысл использование прокси-сервера, чтобы избежать ненужной конфигурации CORS на второй сервере
Это связано с тем, что после развертывания ваш внешний интерфейс и внутренний код будут сосуществовать на одном сервере (= сервер grunt нужен только в dev time). Я хотел подчеркнуть этот момент, потому что ответ @Ulugbek может предполагать, что вам нужен CORS для работы с grunch-connect-proxy.
- ECONNREFUSED ошибка происходит, когда ваш второй сервер не отвечает
В моем случае, я обнаружил, что http://127.0.0.1:8000/api/v1/test
не реагирует, даже если http://localhost:8000/api/v1/test
было. Итак, я немного перепутал с/etc/hosts и решил проблему, убедившись, что обе конечные точки отвечают соответственно.
Такая же ошибка может случиться с вами, если второй сервер не прослушивает проксированную конечную точку.
Спасибо за ваш ответ. Я фактически использую Laravel 4 в бэкэнд, но это не имеет значения. Я знаю, как решить проблему CORS с Laravel. Я подумал, что точка использования прокси-сервера grunt-connect-это точно НЕ добавить определенную настройку CORS на бэкэнд, так что ваш производственный код действует одинаково в этом отношении. – Dream4ge
Да, я тоже так думал, но не смог заставить его работать с Rails, пока я явно не разрешил доступ с grunt (получил ту же ошибку). Возможно, в этом и проблема. Для меня это помогло серверу Rails иметь полный отладочный инструмент в командной строке. Вы можете видеть, действительно ли запрос достигает вашего исходного кода? – Ulugbek
Запрос никогда не достигает бэкэнда, видимо. Я использовал Fiddler, чтобы отследить его, и я также вручную зарегистрировал любой запрос, который достигает моего бэкэнда. Кажется, что сервер соединения grunt выбрасывает 500, с сообщением, упомянутым выше, и ни один запрос никогда не достигает моего бэкэнд в соответствии с журналами. Кроме того, я также добавил CORS на бэкэнд. Когда я делаю запрос на localhost: 3000 напрямую, все работает нормально. Он перестает работать, когда я делаю то же самое на localhost: 9000 (который должен быть перенаправлен в соответствии с моей конфигурацией прокси). – Dream4ge