Heroku comendo meus cabeçalhos HTTP personalizados
-
19-09-2019 - |
Pergunta
Estou usando o Heroku (heroku.com) para implantar meu aplicativo Rails e estou construindo um cliente iPhone para fazer interface com ele.Minha intenção era passar o identificador exclusivo do dispositivo do telefone para o aplicativo como um cabeçalho HTTP para autenticação.Quando testo localmente, meus cabeçalhos funcionam bem, mas no Heroku parece remover meu cabeçalho personalizado.Eu verifiquei com um script 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) }
No meu servidor local, o cabeçalho está lá, mas no heroku não está.
Alguma ideia?
Obrigado,
Jeremias
Solução
Você já tentou passar isso como um cabeçalho X, ou seja,X-HTTP-DEVICE-UDID?A maioria dos cabeçalhos HTTP personalizados ou não padrão são passados como cabeçalhos X.
Outras dicas
Publiquei sobre isso no apoio da Heroku e finalmente entendi o que a resposta existente significava.
Tente usar "x-" em vez de "x_". Por exemplo, "x-sndfile" é o nome de um cabeçalho HTTP, mas quando isso é passado para o rack, isso se torna "x_sendfile". Após essa pontuação inicial, acredito que o restante do cabeçalho será aprovado normalmente, além de ser capitalizado.
Como você está usando o bambu, suas solicitações são passadas pelo NGINX, que filtrarão os cabeçalhos que se acha malformados.
Saúde, JD
Apenas pensei que isso poderia ser útil para outros novatos como eu procurando isso.