รูปแบบ 'ถูกต้อง' สำหรับตัวแปรสภาพแวดล้อม HTTP_PROXY คืออะไร แคปหรือไม่มีแคป?


คำตอบ:


27

ไม่มีหน่วยงานกลางที่กำหนดความหมายอย่างเป็นทางการให้กับตัวแปรสภาพแวดล้อมก่อนที่แอปพลิเคชันจะสามารถใช้งานได้ POSIXกำหนดความหมายของตัวแปรบางตัว ( PATH,, TERM... ) และแสดงรายการอื่น ๆ อีกมากมายในแบบที่ไม่เกี่ยวกับการใช้งานทั่วไปซึ่งทั้งหมดเป็นตัวพิมพ์ใหญ่ http_proxyและเพื่อน ๆ ไม่ใช่หนึ่งในนั้น

ไม่เหมือนกับตัวแปรสภาพแวดล้อมทั่วไปที่ใช้โดยหลาย ๆ แอพพลิเคชั่http_proxyhttps_proxy,, ftp_proxyและno_proxyเป็นตัวพิมพ์เล็กทั่วไป ฉันจำไม่ได้ว่าโปรแกรมใดที่เข้าใจพวกเขาเป็นตัวพิมพ์ใหญ่เท่านั้นฉันไม่สามารถหาโปรแกรมที่ลองใช้ตัวพิมพ์ใหญ่ได้ โปรแกรมจำนวนมากใช้ตัวแปรตัวพิมพ์เล็กเท่านั้นรวมถึง lynx, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2 เป็นต้นดังนั้นสำหรับตัวแปรเหล่านี้รูปแบบที่ถูกต้องคือตัวพิมพ์เล็ก

ชื่อตัวพิมพ์เล็กวันที่อย่างน้อยกลับไปที่CERN libwww 2.15ในเดือนมีนาคม 1994 (ขอบคุณStéphane Chazelas สำหรับการค้นหานี้) ฉันไม่รู้ว่าอะไรเป็นแรงบันดาลใจในการเลือกตัวพิมพ์เล็กซึ่งจะเป็นสิ่งที่ผิดปกติ


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

สคริปต์ cloudformation (CFN สัญญาณ CFN-init) HTTPS_PROXYใช้ตัวแปรตัวพิมพ์ใหญ่ นักเทียบท่ายังใช้ตัวแปรตัวพิมพ์ใหญ่
เฟลิเป้อัลวาเรซ

ตัวพิมพ์เล็กจะไม่ทำงานสำหรับฉันเมื่อพยายามเพิ่มพื้นที่เก็บข้อมูล ppa sudo -E apt-add-repository ppa:xxxxx/xxxx. ฉันต้องunset https_proxyและexport HTTPS_PROXY=http://a.b.c.d:xxxx
Mheni

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

คอมไพล์

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 หากคุณต้องการใช้พร็อกซี HTTP ในสภาพแวดล้อม CGI ให้ใช้ ProxyHandler อย่างชัดเจนหรือตรวจสอบให้แน่ใจว่าชื่อตัวแปรอยู่ในตัวพิมพ์เล็ก (หรืออย่างน้อยส่วนต่อท้าย _proxy)


แอปพลิเคชั่นบางตัวอนุญาตให้NO_PROXYมีดาว / ช่วง IP ในขณะที่บางแอปพลิเคชันไม่มี


ดังนั้น

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

คุณควรได้รับการคุ้มครอง


0

การประชุมคือการใช้ตัวแปรสภาพแวดล้อม capps ทั้งหมดเมื่อส่งออกเพื่อให้เมื่อคุณเขียนเชลล์สคริปต์คุณสามารถใช้ชื่อตัวแปรตัวพิมพ์เล็กโดยไม่ต้องกังวลเกี่ยวกับการชนกันของชื่อกับโปรแกรมอื่น ๆ ของหลักสูตรนี้เป็นแบบแผนเท่านั้นไม่มีข้อ จำกัด ทางเทคนิคในการ จำกัด ชื่อของตัวแปรสภาพแวดล้อมดังนั้นรุ่นตัวพิมพ์เล็กสามารถใช้ในบางกรณี แต่วิธีปฏิบัติที่ดีที่สุดคือตัวพิมพ์ใหญ่และจำไว้ว่าตัวพิมพ์เล็กและตัวพิมพ์เล็ก ค่า


ไม่เหมือนกับตัวแปรสภาพแวดล้อมทั่วไปส่วนใหญ่ (โดยทั่วไป) ทั้งหมดhttp_proxyและพี่น้องของมันมักจะเป็นตัวพิมพ์เล็ก
Gilles 'หยุดความชั่วร้าย'

@Gilles ที่จะเป็นข้อบกพร่อง
hildred

3
ไม่มันไม่ใช่ คุณพูดถูกว่ามีข้อตกลงให้ใช้ตัวพิมพ์ใหญ่สำหรับตัวแปรสภาพแวดล้อม แต่เป็นเพียงข้อตกลงไม่ใช่กฎแบบสัมบูรณ์ มาตรฐานพฤตินัยสำหรับตัวแปรสภาพแวดล้อมhttp_proxyและเพื่อน ๆ จะต้องสะกดเป็นตัวพิมพ์เล็กโดยละเมิดการประชุม สำหรับแอปพลิเคชันที่ใช้HTTP_PROXYจะเป็นข้อผิดพลาดเพราะมันจะไม่เข้ากันกับส่วนที่เหลือของโลก
Gilles 'หยุดความชั่วร้าย'

1
snarf ต้องการตัวพิมพ์ใหญ่และมีรายงานข้อผิดพลาดกับ wget
hildred

1
ย้อนกลับ เมื่อมีพฤติกรรมที่เกิดขึ้นเป็นเวลา 20 ปีถูกหรือผิดนั่นเป็นสิ่งที่เกิดขึ้นและจะไม่เปลี่ยนแปลง ฉันคิดว่าผู้บุกเบิกนั้นคม (มันเก่ากว่าเว็บ); ฉันไม่รู้ว่าทำไมมันถึงใช้ตัวพิมพ์เล็ก Curl เริ่มออกเป็นตัวพิมพ์ใหญ่แล้วเปลี่ยนไปเป็นตัวพิมพ์เล็กเข้ากันได้กับแมวป่าชนิดหนึ่งและ wget
Gilles 'SO- หยุดความชั่วร้าย'


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.