ruby-on-rails curl osx-mavericks thin

ruby on rails - cURL no se puede conectar a localhost, pero el navegador puede



ruby-on-rails osx-mavericks (5)

Estoy ejecutando una aplicación de Rails localmente (servidor Thin), y puedo conectarme localmente desde el navegador (localhost: 3000), pero cuando intento usar curl, obtengo:

curl -H ''id:1'' -i ''http://localhost:3000/api/data'' -v * Hostname was NOT found in DNS cache * Trying ::1... * Adding handle: conn: 0x7fd121808200 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0x7fd121808200) send_pipe: 1, recv_pipe: 0 * Connection failed * connect to ::1 port 3000 failed: Connection refused * Trying fe80::1... * Connection failed * connect to fe80::1 port 3000 failed: Connection refused * Failed to connect to localhost port 3000: Connection refused * Closing connection 0 curl: (7) Failed to connect to localhost port 3000: Connection refused

Esto solía funcionar bien, pero recientemente actualicé a Mavericks, que sospecho que puede haber roto algo. También puedo curvar con éxito desde la web.


¿Estás detrás de un proxy? A continuación, utilice la información siguiente para omitir el proxy por completo.

curl -x "" "http://127.0.0.1:3000"


En lugar de

curl localhost:3000

tratar

curl 0.0.0.0:3000

Funciona.
Si no es así, verifique la salida cuando inicie su servidor de rieles:

=> Booting WEBrick => Rails 3.2.13 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2014-10-28 15:30:08] INFO WEBrick 1.3.1 [2014-10-28 15:30:08] INFO ruby 2.0.0 (2014-02-24) [x86_64-darwin12.5.0] [2014-10-28 15:30:08] INFO WEBrick::HTTPServer#start: pid=4004 port=3000

Use la url al final de la línea 2 en lugar de ENV[''HOST'']


Este es un error curl ( uno extraño ), donde Curl no puede volver a IPv4 si hay una entrada de IPv6 en / etc / hosts que no responde.

Puede obligarlo a usar IPv4 a través de la opción -4 .


Otra causa de este problema puede ser un sistema mal configurado con una dirección proxy. correr

export http_proxy=

y vuelva a ejecutar el comando curl, para eliminar esto como un factor contribuyente. Me solucionó este problema.


Suponiendo que no ha tocado / etc / hosts y scutil reports son positivos:

$ scutil -r 127.0.0.1 Reachable,Local Address $ scutil -r localhost Reachable,Local Address

entonces mi conjetura es que el Firewall está activo y no acepta conexiones de curl.

Intente agregar curl a la lista de aplicaciones aceptadas en (supongo que en las alternativas de idioma ya que mi máquina está configurada para usar sueco) Preferencia -> Seguridad -> Alternativas de firewall -> signo más -> (búsqueda de curl y agregarlo)

Nota: asegúrese de agregar el rizo que está usando en su caparazón.

$ type -a curl curl is /opt/local/bin/curl curl is /usr/bin/curl