Question

J'utilise Heroku (Heroku.com) pour déployer mon application Rails, et je construis un client iPhone pour l'interfacer avec. Mon intention était de passer l'identifiant de périphérique unique du téléphone à l'application en tant qu'en-tête HTTP pour l'authentification. Quand je teste localement, mes en-têtes se déroulent bien, mais sur Heroku, il semble éliminer mon en-tête personnalisé. J'ai vérifié avec un 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) }

Contre mon serveur local, l'en-tête est là, mais sur Heroku, ce n'est pas le cas.

Des idées?

Merci,

Jeremy

Était-ce utile?

La solution

Avez-vous essayé de passer cela en tant qu'en-tête X, c'est-à-dire x-http-device-udid? La plupart des en-têtes HTTP personnalisés ou non standard sont passés sous forme de têtes X.

Autres conseils

J'ai posté à ce sujet sur le soutien d'Heroku et j'ai finalement compris ce que signifiait la réponse existante.

Essayez d'utiliser "x-" au lieu de "x_". Par exemple, "X-SendFile" est le nom d'un en-tête HTTP, mais lorsque cela est passé à Rack, cela devient "X_SendFile". Après cette ponctuation initiale, je crois que le reste de l'en-tête sera passé normalement, en plus d'être capitalisé.

Étant donné que vous utilisez du bambou, vos demandes sont passées via Nginx, qui filtrera les en-têtes qu'il pense être mal formulés.

Cheers, JD

Je pensais juste que cela pourrait être utile pour d'autres débutants comme moi à la recherche de cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top