我正在尝试访问 sinatra 过滤器中的 header 。我的请求包含 header “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
我可以看到 token 在请求中,但我无法访问它。
"HTTP_CONNECTION"=>"close",
"HTTP_AUTH"=>"test",
"HTTP_ACCEPT"=>"application/json",
我做错了什么?
最佳答案
我只想补充一点,如果您使用 headers
,它不会显示自定义 header 。例如,我设置了一个名为 X-CSRF-Token 的自定义 header ,我会在每个 AJAX 请求中发送它,而这个 header 不会显示在该哈希中。如果您需要访问自定义 header ,您将通过 request.env
找到它们,例如:
post '/' do
header_token = request.env["HTTP_X_CSRF_TOKEN"]
end
(注意机架如何将 X-CSRF-Token 更改为 HTTP_X_CSRF_TOKEN)
关于ruby - 从 Sinatra 访问 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25660827/