5

我正在使用 Heroku (heroku.com) 来部署我的 rails 应用程序,并正在构建一个 iPhone 客户端来与其交互。我的目的是将手机的唯一设备标识符作为 HTTP 标头传递给应用程序以进行身份​​验证。当我在本地测试时,我的标头通过正常,但在 Heroku 上它似乎去掉了我的自定义标头。我用 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) }

在我的本地服务器上,标头在那里,但在 heroku 上却没有。

有任何想法吗?

谢谢,

杰里米

4

2 回答 2

11

您是否尝试过将其作为 X- 标头传递,即 X-HTTP-DEVICE-UDID?大多数自定义或非标准 HTTP 标头都作为 X- 标头传递。

于 2009-07-28T21:29:00.027 回答
2

我在 Heroku 支持上发布了有关此内容的信息,并最终理解了现有答案的含义。

尝试使用“X-”而不是“X_”。例如,“X-Sendfile”是 HTTP 标头的名称,但是当它传递给 Rack 时,它变成了“X_SENDFILE”。在这个最初的标点符号之后,我相信标题的其余部分将正常传递,除了大写。

由于您使用的是 Bamboo,因此您的请求会通过 nginx,它会过滤掉它认为格式错误的标头。

干杯,JD

只是认为这可能对像我这样寻找这个的其他新手有用。

于 2011-09-27T20:29:34.503 回答