Heroku吃我的自定义HTTP标头
-
19-09-2019 - |
题
我正在使用Heroku(Heroku.com)部署我的Rails应用程序,并正在构建iPhone客户端以与之互动。我的目的是将手机的唯一设备标识符作为用于身份验证的HTTP标题。当我在本地测试时,我的标题很好,但是在Heroku上,它似乎可以剥离我的定制标题。我用红宝石脚本进行了验证:
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上不是。
有任何想法吗?
谢谢,
杰里米
解决方案
您是否尝试将其作为X-Header,即X-HTTP-Device-udid?大多数自定义或非标准的HTTP标头作为X标头传递。
其他提示
我在Heroku支持上发布了有关此信息的信息,并最终了解现有答案的含义。
尝试使用“ X-”而不是“ X_”。例如,“ x-sendfile”是HTTP标头的名称,但是当将其传递给机架时,这将变成“ x_sendfile”。在最初的标点符号之后,我相信其余的标头将被正常通过,除了被大写。
由于您使用的是竹子,因此您的请求将通过NGINX,这将过滤掉它认为已畸形的标题。
欢呼,JD
只是认为这对于像我这样的其他新手可能很有用。
不隶属于 StackOverflow