簡體   English   中英

從Sinatra訪問標題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM