Pregunta

Estoy usando Heroku (heroku.com) para implementar mi aplicación Rails, y estoy construyendo un cliente de iPhone para interactuar con ella. Mi intención era pasar el identificador de dispositivo único del teléfono al teléfono como encabezado HTTP para la autenticación. Cuando pruebo localmente, mis encabezados pasan bien, pero en Heroku parece quitar mi encabezado personalizado. Verifiqué con un guión de Ruby:

url = URI.parse('http://#{myapp}.heroku.com/')
#url = URI.parse('http://localhost:3000/')
req = Net::HTTP::Post.new(url.path)
#bogus params
req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')
#device header
req['HTTP_DEVICE_UDID'] = "XXXXXX"
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }

Contra mi servidor local, el encabezado está allí, pero en Heroku no lo está.

¿Algunas ideas?

Gracias,

Jeremy

¿Fue útil?

Solución

¿Has intentado pasar eso como un encabezado X, es decir, x-http-device-udid? La mayoría de los encabezados HTTP personalizados o no estándar se pasan como encabezados X.

Otros consejos

Publiqué sobre esto en el apoyo de Heroku y finalmente entendí lo que significaba la respuesta existente.

Intente usar "X-" en lugar de "X_". Por ejemplo, "X-SendFile" es el nombre de un encabezado HTTP, pero cuando esto se pasa a Rack, esto se convierte en "X_SendFile". Después de esta puntuación inicial, creo que el resto del encabezado se pasará normalmente, aparte de ser capitalizado.

Dado que está utilizando bambú, sus solicitudes se pasan a través de NGINX, que filtrará encabezados que cree que están malformados.

Saludos, JD

Solo pensé que esto podría ser útil para otros novatos como yo buscando esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top