[英]Accessing headers from Sinatra
我試圖訪問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",
我究竟做錯了什么?
我只是想補充說,如果你使用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)
before
使用headers
方法的塊before
嘗試使用:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.