HTTP_PROXY पर्यावरण चर के लिए 'सही' प्रारूप क्या है? कैप या कोई कैप?


25

मैं दोनों का सामना किया है http_proxyऔर HTTP_PROXY। क्या दोनों फॉर्म समतुल्य हैं? क्या उनमें से एक दूसरे पर पूर्वता लेता है?

जवाबों:


27

कोई केंद्रीय प्राधिकरण नहीं है जो अनुप्रयोगों का उपयोग करने से पहले पर्यावरण चर के लिए एक आधिकारिक अर्थ प्रदान करता है। POSIX कुछ चर ( PATH, TERM...,) के अर्थ को परिभाषित करता है और सामान्य उपयोग में होने के रूप में गैर-मानक तरीके से कई और सूचीबद्ध करता है, उन सभी को अपरकेस में। http_proxyऔर दोस्त उनमें से एक नहीं है।

मूल रूप से सभी पारंपरिक वातावरण में कई अनुप्रयोगों के द्वारा प्रयोग किया जाता चर के विपरीत, http_proxy, https_proxy, ftp_proxyऔर no_proxyआमतौर पर लोअरकेस कर रहे हैं। मुझे किसी भी कार्यक्रम की याद नहीं है जो केवल उन्हें अपरकेस में समझता है, मैं एक भी नहीं खोज सकता जो उन्हें अपरकेस में कोशिश करता है। कई कार्यक्रम केवल लिनेक्स, विग, कर्ल, पर्ल एलडब्ल्यूपी, पर्ल डब्ल्यूडब्ल्यूडब्ल्यू :: खोज, पायथन यूरलिब / यूरलिब 2, आदि सहित लोअरकेस संस्करण का उपयोग करते हैं। इसलिए इन चर के लिए सही रूप लोअरकेस वन है।

मार्च 1994 में लोअरकेस नाम कम से कम CERN libwww 2.15 पर वापस आ गया (धन्यवाद करने के लिए स्टीफन चेज़ेलस के लिए)। मुझे नहीं पता कि लोअरकेस की पसंद ने क्या प्रेरित किया, जो तब भी असामान्य था।


1
Unlike basically all conventional environment variables used by many applications, http_proxy, https_proxy, ftp_proxy and no_proxy are commonly lowercase. I don't recall any program that only understands them in uppercase-> रिकॉर्ड के लिए, मुझे अभी पता चला है कि 17.04.0-CE केवल NO_PROXY का सम्मान करता है।
jaume

क्लाउडफॉर्म स्क्रिप्ट (सीएफएन-सिग्नल, सीएफएन-इनिट) अपरकेस वैरिएंट का उपयोग करते हैं HTTPS_PROXY। docker अपरकेस संस्करण का भी उपयोग करता है।
फेलिप अल्वारेज़

निचला मामला मेरे लिए काम नहीं करेगा, जब एक पीपा रिपॉजिटरी को जोड़ने की कोशिश की जाएगी। sudo -E apt-add-repository ppa:xxxxx/xxxx। मैं था unset https_proxyऔरexport HTTPS_PROXY=http://a.b.c.d:xxxx
मिन्ह

7

कोई मानक नहीं है और दोनों अपरकेस और लोअरकेस संस्करण का उपयोग अनुप्रयोग के आधार पर किया जाता है (HTTPS_PROXY, ALL_PROXY, NO_PROXY भी देखें)।

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

कर्ल

ENVIRONMENT VARIABLES

  Curl reads and understands the following environment variables:

        http_proxy, HTTPS_PROXY, FTP_PROXY

  They should be set for protocol-specific proxies. General proxy should be
  set with

        ALL_PROXY

  A comma-separated list of host names that shouldn't go through any proxy is
  set in (only an asterisk, '*' matches all hosts)

        NO_PROXY

Git

http.proxy
   Override the HTTP proxy, normally configured using the http_proxy, https_proxy, 
   and all_proxy environment variables (see curl(1)). [..]

अजगर

urllib.request.getproxies() लोअरकेस और अपरकेस वेरिएंट दोनों को सपोर्ट करता है।

इसमें एक सुरक्षा मुद्दे का भी उल्लेख है:

यदि पर्यावरण चर REQUEST_METHOD सेट है, जो आमतौर पर इंगित करता है कि आपकी स्क्रिप्ट CGI वातावरण में चल रही है, तो पर्यावरण चर HTTP_PROXY (अपरकेस _PROXY) को अनदेखा कर दिया जाएगा। इसका कारण यह है कि चर "प्रॉक्सी:" HTTP हेडर का उपयोग करके क्लाइंट द्वारा इंजेक्ट किया जा सकता है। यदि आपको एक CGI वातावरण में HTTP प्रॉक्सी का उपयोग करने की आवश्यकता है, तो या तो ProxyHandler का स्पष्ट रूप से उपयोग करें, या सुनिश्चित करें कि चर का नाम लोअरकेस (या कम से कम _proxy प्रत्यय) में है।


कुछ एप्लिकेशन NO_PROXYसितारों / आईपी-रेंज को शामिल करने की अनुमति देते हैं जबकि अन्य नहीं करते हैं।


इसलिए

export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy

आपको कवर करना चाहिए था।


0

सम्मेलन का उपयोग सभी capps पर्यावरण चर का उपयोग करते समय उन्हें किया जाता है, ताकि जब आप शेल स्क्रिप्ट लिख रहे हों तो आप अन्य कार्यक्रमों के साथ नाम टकराव के बारे में चिंता किए बिना लोअरकेस चर नामों का उपयोग कर सकें। बेशक यह केवल एक सम्मेलन है, पर्यावरण चर के नामों को सीमित करने पर कोई तकनीकी प्रतिबंध नहीं है, इसलिए लोअरकेस संस्करण को कुछ मामलों में इस्तेमाल किया जा सकता है, लेकिन सबसे अच्छा अभ्यास ऊपरी मामला है, और याद रखें कि वे केस संवेदनशील हैं ताकि वे अलग हो सकें मान।


अधिकांश (मूल रूप से, सभी) पारंपरिक पर्यावरण चर के विपरीत, http_proxyऔर इसके भाई-बहन आमतौर पर कमतर होते हैं।
गिल्स एसओ- बुराई को रोकना '

@ गिल्स जो एक बग होगा।
हल्दी

3
नहीं, यह नहीं है। आप सही कह रहे हैं कि पर्यावरण चर के लिए अपरकेस का उपयोग करने के लिए एक सम्मेलन है, लेकिन यह केवल एक सम्मेलन है, एक पूर्ण नियम नहीं है। पर्यावरण चर http_proxyऔर दोस्तों के लिए वास्तविक मानक एक सम्मेलन के उल्लंघन में, लोअरकेस में वर्तनी है। उपयोग करने के लिए एक आवेदन के लिए HTTP_PROXYएक बग होगा क्योंकि यह दुनिया के बाकी हिस्सों के साथ असंगत होगा।
गिल्स एसओ- बुराई को रोकें '

1
स्नार्फ को अपरकेस की आवश्यकता होती है और विकट के खिलाफ एक बग रिपोर्ट होती है।
hildred

1
वह पिछड़ा हुआ है। जब कोई व्यवहार 20 साल से सही या गलत हो रहा है, तो वह यह है कि यह कैसा है और इसे बदला नहीं जाएगा। मुझे लगता है कि पायनियर लिनेक्स था (यह वेब से पुराना है); मुझे नहीं पता कि इसने लोअरकेस का इस्तेमाल क्यों किया। कर्ल ने अपरकेस के रूप में शुरुआत की और फिर लिनेक्स और विग के साथ अनुकूलता के लिए नीचे की ओर बदल दिया
गिल्स एसओ- बुराई को रोकें '

0

WGET - केवल लोअरकेस प्रॉक्सी सेटिंग्स का उपयोग कर रहा है!


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.