Jim*_*ies 10 ruby sinatra http-headers
我试图访问sinatra过滤器中的标头.我的请求包括标题"HTTP_AUTH",但我无法访问它.我的过滤器是
before do
    halt 403 unless request['HTTP_AUTH'] == 'test'
end
它从我的机架测试中正常工作.
browser.get '/mypath', "CONTENT_TYPE" => "application/json", "HTTP_AUTH" => 'test'
但是当我从其他来源尝试时,我无法访问它.如果我puts request.env可以看到令牌在请求中,但我无法访问它.
"HTTP_CONNECTION"=>"close", 
"HTTP_AUTH"=>"test", 
"HTTP_ACCEPT"=>"application/json", 
我究竟做错了什么?
小智 32
我只是想补充说,如果你使用headers它将不会显示自定义标题.例如,我设置了一个名为X-CSRF-Token的自定义标头,我在每个AJAX请求中发送该标头,并且这个标头不会显示在该哈希中.如果您需要访问自定义标题,您可以通过以下方式找到它们request.env:
post '/' do
  header_token = request.env["HTTP_X_CSRF_TOKEN"]
end
(注意架子如何将X-CSRF-Token更改为HTTP_X_CSRF_TOKEN)
Зел*_*ный 12
尝试使用方法before块headers:
before do
  headers "HTTP_AUTH" => "test"
  headers "Content-Type" => "text/html; charset=utf-8"
end
或在请求中:
get '/' do
  headers['HTTP_AUTH'] = "test"
  headers['Cache-Control'] = 'public, max-age=600'
  puts headers # show headers on this request
end
使用headers就是hash 
| 归档时间: | 
 | 
| 查看次数: | 18464 次 | 
| 最近记录: |