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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top