簡體   English   中英

如何僅在rails 2應用程序中訪問請求標頭?

[英]How to access request headers only in a rails 2 application?

Rails提供了一個request.headers方法,它返回所有標題和大量額外的非標題信息...我只想訪問請求標題,我該怎么辦?

問候

您基本上必須隔離所有以HTTP_CONTENT_為前綴的環境條目 ,這些條目對應於您的HTTP標頭,例如:

# CONTENT_LENGTH -> Content-Length
# HTTP_COOKIE -> Cookie
# HTTP_USER_AGENT -> User-Agent
@headers |= request.env.inject({}) { |h, (k, v)|
  if k =~ /^(HTTP|CONTENT)_/ then
    h[k.sub(/^HTTP_/, '').dasherize.gsub(/([^\-]+)/) { $1.capitalize }] = v 
  end
  h
}

或者,您可以更具限制性,只查找特定的 HTTP標頭 ,以避免意外地拾取可能看起來像標題但實際上不是有效的環境變量,例如CONTENT_BLAHTTP_DUMMY

@headers |= %w[ CONTENT_LENGTH CONTENT_TYPE HTTP_ACCEPT
HTTP_REFERER HTTP_USER_AGENT ].inject({}) { |h, k|
  if v = request.env[k] then
    h[k.sub(/^HTTP_/, '').dasherize.gsub(/([^\-]+)/) { $1.capitalize }] = v 
  end
  h
}

看看actionpack/lib/action_controller/request.rb ,了解它們如何梳理環境以提取請求標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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