Domanda

Sto usando Heroku (Heroku.com) per distribuire la mia applicazione Rails e sto costruendo un client per iPhone per interfacciarlo. La mia intenzione era di passare l'identificatore univoco del dispositivo del telefono all'app come intestazione HTTP per l'autenticazione. Quando provo a livello locale, le mie intestazioni arrivano bene, ma su Heroku sembra togliere la mia testata personalizzata. Ho verificato con uno script di 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) }

Contro il mio server locale, l'intestazione è lì, ma su Heroku non lo è.

Qualche idea?

Grazie,

Jeremy

È stato utile?

Soluzione

Hai provato a passarlo come header X, cioè x-http-device-ud? La maggior parte delle intestazioni HTTP personalizzate o non standard sono passate come headers X.

Altri suggerimenti

Ho pubblicato su questo sul supporto di Heroku e alla fine ho capito cosa significasse la risposta esistente.

Prova a usare "x-" invece di "x_". Ad esempio, "X-Sendfile" è il nome di un'intestazione HTTP, ma quando questo viene passato a Rack, questo diventa "X_SENDFILE". Dopo questa punteggiatura iniziale, credo che il resto dell'intestazione verrà approvato normalmente, oltre a essere capitalizzato.

Dato che stai usando il bambù, le tue richieste vengono passate tramite Nginx, che filtrano le intestazioni che ritiene malformate.

Saluti, JD

Pensavo solo che questo potesse essere utile per altri neofiti come me che cerco questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top