3
A
回答
5
實際上需要隔離所有環境條目其前綴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 headers,以避免意外拾取可能看起來像標題但實際上不是有效的環境變量,例如CONTENT_BLA
或HTTP_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
看他們如何梳理環境中提取請求頭。
相關問題
- 1. 使用OGNL表達式訪問Tiles中的請求標頭2
- 2. 如何從API請求響應中訪問單個標頭?
- 3. 在Django/python上訪問請求標頭
- 4. 如何在Java Restlet中訪問請求的標頭值?
- 5. 如何訪問沒有出現在$ _SERVER中的請求標頭?
- 6. 如何在DataSnap Server中訪問請求標頭?
- 7. 僅限XHR請求標頭
- 8. 如何修改Android應用程序的HTTP請求標頭?
- 9. 如何在Http請求中訪問響應頭
- 10. 在Cordova應用程序中設置User-Agent請求標頭
- 11. 如何在Rails應用程序中啓用ajax請求
- 12. 訪問nginx x-accel請求標頭
- 13. Rails請求HTTP_ACCEPT標頭的`:*/*`
- 14. 如何訪問客戶端頭請求
- 15. 如何訪問HTTP :: Server :: Simple :: CGI中的HTTP請求標頭?
- 16. 如何訪問氚中傳入請求的標頭?
- 17. 如何訪問Python和Java中的Google Cloud Endpoints請求標頭
- 18. 如何在Rails 3應用程序中描述請求
- 19. 在rails的初始化程序中訪問請求對象
- 20. 訪問當前請求頭
- 21. 使用請求標頭在Android中訪問REST API
- 22. Angular - 在應用程序啓動時解析請求標頭
- 23. 如何訪問Rails的請求參數
- 24. 如何在我的應用程序中訪問攝像頭
- 25. 如何在android應用程序中發送http請求以訪問REST API
- 26. 如何在Rails中獲取「Origin」請求標頭
- 27. 如何訪問Apache ISIS DomainService上的請求標頭或HTTPServletRequest?
- 28. Rails應用程序使2個動作每1個請求
- 29. 在AngularJs的http post請求中訪問重定向標頭
- 30. 在應用程序啓動期間請求訪問照片庫
我不能去第二個,因爲所有的http頭(即擴展頭)都是未知的服務器。那些標題,如X-Runtime,將顯示爲env HTTP_X-RUNTIME? Regards – 2010-02-28 01:45:53
這將是'HTTP_X_RUNTIME'在環境中,'X-Runtime'在結果'@ headers'哈希中。第二個片段只使用可能對您有意思的標題的「白名單」(以篩選出不感興趣的內容);如果白名單上的某些內容實際上並不存在於您的環境中,則它不會被添加到'@ headers';反過來說,如果它在環境中,但不在白名單上,它不會被添加到'@ headers'中。 – vladr 2010-02-28 02:01:39
謝謝弗拉德...生病了,第一個選擇:我需要所有的請求標題 - 即使那些我不知道,所以我不能去與白名單。 – 2010-02-28 02:52:40