2015-02-26 5 views
17

मैं कैसे रेलप्रिंट बाहर ही रेल में हेडर का अनुरोध

request.headers["HEADER_NAME"] 

में एक हैडर तक पहुँचने के लिए हालांकि, मैं सब हेडर एक ब्राउज़र द्वारा पारित प्राप्त करना चाहते हैं पता है। मैं देखता हूं कि मैं इसे

request.headers.each { |header| ... } 

हालांकि, यह दोनों शीर्षलेखों और अन्य पर्यावरण चर दोनों को थूक देगा। क्या केवल हेडर प्राप्त करने का कोई तरीका है?

अद्यतन 1

मेरे समस्या interation नहीं है। मेरी समस्या पर्यावरण चर और हेडर के बीच अंतर कर रही है। उनमें से दोनों की रिपोर्ट की जाएगी जबकि प्रत्येक या चाबियों का उपयोग करके बातचीत।

+0

जवाब सभी की वर्तमान सूची सवाल गलत समझा जा रहा है .. मैं भी इसी तरह की जरूरत का सामना करना पड़ा है, और वास्तव में यह कैसे हल करने के लिए पता नहीं है अभी तक .. – songyy

+0

एक्सप्रेस.जेएस में आपको ऑब्जेक्ट के रूप में पूरा अनुरोध मिलता है। रेल पर रूबी में समान है? –

उत्तर

0

आप जब एक हैश रूबी से अधिक पुनरावृत्ति

request.headers.each { |key, value| } 

करने के लिए सामान्य में सक्षम होना चाहिए अपने ब्लॉक के arity पर लग रहा है और आप या तो एक जोड़ी (कुंजी + मान) या अलग-अलग वैरिएबल देता है।

request.headers.each { |key, value| } 

का उपयोग कर यह (कुंजी + मूल्य) के साथ अपने अनुरोध किया हैडर पुनरावृत्ति है तक (इस मामले में हैश को हेडर वस्तु एक वस्तु आंतरिक है)

+1

मेरी समस्या हस्तक्षेप नहीं है। मेरी समस्या पर्यावरण चर और हेडर के बीच अंतर कर रही है। उनमें से दोनों की रिपोर्ट की जाएगी जबकि प्रत्येक या चाबियों का उपयोग करके बातचीत। –

+0

request.headers कुंजी कुंजी विधि का जवाब नहीं देता है। यह एक्शनडिस्पाच :: एचटीपी :: हेडर –

+0

का एक उदाहरण है, ठीक है आप - धन्यवाद। –

7

, लेकिन यदि आप विशिष्ट मान चाहते हैं आप के लिए है HTTP_KEYNAME जैसे कुंजी नाम का उपयोग करें क्योंकि जब भी HTTP अनुरोध आते हैं तो यह कुंजी को HTTP में जोड़ देगा और अपरकेस के बारे में सुनिश्चित होगा क्योंकि यह केस संवेदनशील है।

उदाहरण के लिए :

अगर हम auth_token के रूप में शीर्ष लेख अनुरोध पैरामीटर पारित कर दिया और उपयोग करना चाहते हैं, हम इस का उपयोग कर सकते हैं।

request.headers["HTTP_AUTH_TOKEN"] 
2

आप अनुरोध

request.headers.first(50).to_h.keys 

यह request.headers में परिवर्तित कर देंगे से केवल हेडर सूची प्राप्त करने के लिए इस कोशिश कर सकते हैं सरणी में वस्तु और उसके बाद के रूप में प्रयोग की जाने वाली अनुरोध में सभी चाबियाँ की सूची प्राप्त करने हैश करने के लिए

request.headers["keyname"] 

यह बहुत कुशल नहीं हो सकता है लेकिन मुझे लगता है कि यह काम कर सकता है।

उम्मीद है कि इससे मदद मिलती है।

4

यकीन नहीं करता है, तो यह किसी भी उपयोगी है, लेकिन मैं इस जानवर बल दृष्टिकोण

request.env.select {|k,v| 
    k.match("^HTTP.*|^CONTENT.*|^REMOTE.*|^REQUEST.*|^AUTHORIZATION.*|^SCRIPT.*|^SERVER.*") 
} 
0

आप शायद की तलाश में हो सकता है का उपयोग कर समाप्त हो गया:

request.env 

यह मूलतः की रूबी हैश पैदा करेगा पूरा अनुरोध वस्तु।

अधिक जानकारी के लिए इस सवाल का चेक: How do I see the whole HTTP request in Rails

संबंधित मुद्दे