शीर्षक सुंदर आत्म-व्याख्यात्मक है। क्या हेडर प्राप्त करने का कोई तरीका है (Rack::Request.env[]
को छोड़कर)?रैक :: अनुरोध - मैं सभी शीर्षलेख कैसे प्राप्त करूं?
उत्तर
HTTP हेडर Rack environment अपने अनुप्रयोग के लिए पारित में उपलब्ध हैं:
HTTP_
चर: ग्राहक की आपूर्ति HTTP अनुरोध हेडर के लिए इसी चर (जैसे कि, चर जिनके नाम HTTP_ के साथ शुरू)। इन चरों की उपस्थिति या अनुपस्थिति अनुरोध में उपयुक्त HTTP शीर्षलेख की उपस्थिति या अनुपस्थिति से मेल खाना चाहिए।
तो HTTP शीर्षलेख "HTTP_" के साथ उपसर्ग किए गए हैं और हैश में जोड़े गए हैं।
require 'rack'
app = Proc.new do |env|
headers = env.select {|k,v| k.start_with? 'HTTP_'}
.collect {|key, val| [key.sub(/^HTTP_/, ''), val]}
.collect {|key, val| "#{key}: #{val}<br>"}
.sort
[200, {'Content-Type' => 'text/html'}, headers]
end
Rack::Server.start :app => app, :Port => 8080
के रूप में Chrome या Firefox के द्वारा दिखाया जब मैं इस चलाने के लिए, HTTP हेडर के अलावा, वहाँ एक "संस्करण: HTPP/1.1" है:
यह एक छोटा सा कार्यक्रम है कि अलग करता है और उन्हें प्रदर्शित करता है (यानी कुंजी "HTTP_VERSION" और मान "HTTP/1.1" के साथ एक प्रविष्टि env हैश में जोड़ा जा रहा है)।
@ मैट के जवाब के आधार पर है, लेकिन यह वास्तव में के रूप में प्रश्न में अनुरोध आप हैश पर अनुरोध हेडर देता है:
headers = Hash[*env.select {|k,v| k.start_with? 'HTTP_'}
.collect {|k,v| [k.sub(/^HTTP_/, ''), v]}
.collect {|k,v| [k.split('_').collect(&:capitalize).join('-'), v]}
.sort
.flatten]
पर निर्भर करता है क्या महत्वपूर्ण सम्मेलन आप और के बजाय पसंद करते हैं आप कुछ का उपयोग करना चाहें : भुनाने।
- 1. मैं रैक ऐप में सत्र वर्र्स कैसे सेट/प्राप्त करूं?
- 2. मैं रैक/प्रोटेक्शन
- 3. अनुरोध शीर्षलेख
- 4. कैसे रैक
- 5. मैं टोरनाडो अनुरोध के क्लाइंट आईपी कैसे प्राप्त करूं?
- 6. मैं request_finished सिग्नल कॉलबैक से अनुरोध कैसे प्राप्त करूं?
- 7. मैं Django अनुरोध में सभी चयनित चेकबॉक्स के मान कैसे प्राप्त करूं? POST?
- 8. मैं सभी स्थापित निश्चित-चौड़ाई फ़ॉन्ट कैसे प्राप्त करूं?
- 9. मैं वेबकिट में सभी समर्थित सीएसएस गुण कैसे प्राप्त करूं?
- 10. मैं सभी उपलब्ध खोल कमांडों की सूची कैसे प्राप्त करूं
- 11. जावा - मैं जेएलिस्ट से सभी चयनित मूल्य कैसे प्राप्त करूं?
- 12. सेटिंग अनुरोध शीर्षलेख: कनेक्शन
- 13. एंड्रॉइड - अनुरोध शीर्षलेख
- 14. HTTP शीर्षलेख कैसे प्राप्त करें
- 15. मैं CGI स्क्रिप्ट में अनुरोध के HTTP शीर्षलेख का उपयोग कैसे करूं?
- 16. मैं पायथन में पैच अनुरोध कैसे करूं?
- 17. क्या एक jQuery $ .ajax कॉल में सभी अनुरोध शीर्षलेख प्राप्त करने का कोई तरीका है?
- 18. मैं एक gwt 2.1 सेलटेबल्स शीर्षलेख कैसे शैलीबद्ध करूं?
- 19. जावा में SOAP अनुरोध शीर्षलेख कैसे भेजें?
- 20. HTTP अनुरोध शीर्षलेख: UserAgent variable
- 21. मैं nginx को स्थिर प्रतिक्रिया कैसे वापस कर सकता हूं और ऐप को अनुरोध शीर्षलेख भेज सकता हूं?
- 22. अनुरोध से सभी पोस्ट डेटा प्राप्त करें
- 23. HTTP अनुरोध 401.2 प्राप्त करने के सभी अनुरोध - अनधिकृत प्रतिक्रिया
- 24. रेल चेतावनी उत्सर्जित करता है: "रैक :: फ़ाइल शीर्षलेख पैरामीटर रैक 1.5"
- 25. Node.js HTTPS POST अनुरोध शीर्षलेख
- 26. सी # - मैं "सबको" उपयोगकर्ता कैसे प्राप्त करूं?
- 27. मैं कैसे प्राप्त करूं GetFrameContext Windbg
- 28. मैं सभी लोड असेंबली कैसे सूचीबद्ध करूं?
- 29. मैं सभी अंतराल को कैसे साफ़ करूं?
- 30. मैं कमांडलाइन कैसे प्राप्त करूं जिसने प्रक्रिया
आह, तो यह मूल रूप से 'env' वैसे भी है :)। जो कुछ नापसंद है वह कुछ वर्णों के साथ उत्थान वाले नाम हैं। खैर, मुझे लगता है कि मुझे इससे दूर जाना होगा .... – PJK
@PJK अच्छी तरह से नाम केस असंवेदनशील होना चाहिए: http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4। 2। क्या पात्रों को प्रतिस्थापित किया जा रहा है? क्या आप ASCII chracter सेट के बाहर से वर्णों का उपयोग करने की कोशिश कर रहे हैं? शीर्षलेख नाम केवल ASCII होना चाहिए। – matt
मुझे पता है, यह केवल सुविधा का मामला है ... उदाहरण के लिए, एक्स-बिल्ड HTTP_X_BUILD बन जाता है, जिसका अर्थ है X_Build और X-BUILD बराबर होना चाहिए लेकिन (मुझे बताया गया है) ब्राउज़र इन दो विकल्पों के बीच अंतर करते हैं। – PJK