Как настроить http://localhost:9000 для http: /mylocal.loc - PullRequest
3 голосов
/ 01 сентября 2011

Я использую Play Framework, который по умолчанию использует http://localhost:9000. Я также пытаюсь что-то с Twitter, и для аутентификации ему нужно использовать URL-адрес обратного вызова, но Twitter не примет http://localhost:9000 в качестве URL-адреса обратного вызова.

Как я могу настроить свой локальный хост для сопоставления с чем-то вроде http://mylocal.loc, (аналогично vhost Apache) вместо http://localhost:9000?

Ответы [ 4 ]

5 голосов
/ 01 сентября 2011

Проблема заключается в том, что URL необходимо было ввести в следующем формате:

http://127.0.0.1:9000/twitter-callback

Вышеуказанное прекрасно работает в качестве адреса обратного вызова Twitter.

Twitter не пытается получить доступ к localhost напрямую, он просто берет указанный выше адрес, насколько я понимаю, вставляет его в заголовок HTTP-ответа, запрашивая, какой браузер используется для прямого перенаправления 302.

Следующий пост в блоге содержал неоценимую информацию по этому вопросу:

http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local-machine/

1 голос
/ 01 сентября 2011

Причина, по которой Twitter не может использовать localhost в качестве URL-адреса обратного вызова, заключается в том, что localhost - это перенаправление на интерфейс обратной связи вашего компьютера. Другими словами, localhost - это всегда компьютер, на котором вы находитесь. Чтобы другие компьютеры (включая Twitter) могли получить доступ к вашему хосту, вам нужно использовать внешний IP-адрес или имя хоста.

Чтобы узнать свой IP-адрес, посетите whatsmyip . Это скажет вам ваш внешний IP-адрес (который могут получить доступ к другим компьютерам в Интернете). Если у вас есть статический IP-адрес, вы можете приобрести доменное имя или получить бесплатное имя от no-ip или dyndns, чтобы его было легче запомнить и ввести. Вам нужно будет указать DNS-запись из этого домена на ваш IP. Вам также, вероятно, понадобится выполнить переадресацию портов и так далее, чтобы он перешел на ваш компьютер через порт 9000, а не на маршрутизатор (в зависимости от настроек сети).

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

1 голос
/ 01 сентября 2011

РЕДАКТИРОВАТЬ : проблема Джозефа не была связана с отсутствием доступа в Интернет к его локальному серверу, см. Его собственный ответ о том, что происходит, и решение. Этот ответ обрабатывает случай, когда локальный сервер должен быть виден из Интернета.

localhost, он же 127.0.0.1 - это имя, которое на каждом компьютере указывает на сам компьютер. Так что Twitter смотрит на себя, очевидно, не видит сервис, конец истории.

Если ваш компьютер подключен к локальной сети, скорее всего, эта сеть имеет NAT и использует частные адреса, такие как 192.168.x.x, 10.x.x.x или 172.16x.x.x. Эти адреса являются частными (не известны за пределами локальной сети, поскольку не маршрутизируются в Интернете), поэтому вам это тоже не поможет.

Остается ваш публичный IP-адрес, то есть адрес, который ваш маршрутизатор получает от вашего провайдера. Через DNS вы можете сопоставить этот адрес с именем, бесплатной услугой, которая позволяет сопоставить фиксированное имя также с переменной адрес равно DynDNS .

Но подождите, это еще не все! Ваш маршрутизатор защищает вашу сеть, не позволяя трафику отправлять ВНЕ частной сети IN, если только вы не определите какое-либо правило пересылки в маршрутизаторе, в вашем случае это правило, которое перенаправляет входящий tcp-трафик через порт 9000 на порт вашей машины 9000.

Как только все позаботится, ваш компьютер будет доступен снаружи, и ваш обратный вызов должен работать.

0 голосов
/ 01 сентября 2011

Отредактируйте файл hosts и добавьте следующую строку:

127.0.0.1 mylocal.loc

Для Windows оно находится в C:\Windows\System32\drivers\etc\. На * nix вы можете найти его в /etc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...