2010-11-04 17 views
9

मैंने एक PHP स्क्रिप्ट लिखी है जिसे मैं एक ही सर्वर पर कई डोमेन पर उपयोग करना चाहता हूं (उसी स्क्रिप्ट पर इंगित करता हूं)। मैं स्क्रिप्ट में कार्यक्षमता जोड़ना चाहता हूं ताकि मैं पता लगा सकूं कि स्क्रिप्ट किस डोमेन पर किसी भी समय काम कर रही है। डोमेन खोजने के लिए HTTP_HOST का उपयोग किया जा सकता है, हालांकि, मैंने पढ़ा है कि यह विशेष रूप से पुराने ब्राउज़र के साथ विश्वसनीय नहीं है। मेरी समझ सबसे अधिक अपाचे सर्वर वर्चुअल होस्ट का उपयोग करती है जो वैसे भी उसी विधि का उपयोग करती है, इसलिए यदि यह होस्टिंग प्रदाताओं के साथ कोई समस्या नहीं है तो यह मेरे कोड के साथ कोई समस्या नहीं होनी चाहिए।HTTP_HOST कितना विश्वसनीय है?

क्या कोई भी इसे सत्यापित कर सकता है और भ्रम को दूर कर सकता है?

उत्तर

10

HTTP_HOSTHost: हेडर के लिए है:

यह HTTP_HOST पर भरोसा करने के लिए कभी अच्छा है (उदाहरण के लिए इसे अपने PHP स्क्रिप्ट में यह प्रक्रिया से पहले इसके लिए अनुमति प्राप्त मान की एक सरणी स्थापित करने के लिए एक अच्छा विचार हो सकता है) अनुरोध के दौरान HTTP 1.1 उपयोगकर्ता-एजेंट द्वारा भेजा गया। इसका उपयोग HTTP 1.0 क्लाइंट्स द्वारा नहीं किया जाता है, इसलिए यह तब दिखाई नहीं देगा। हालांकि, आजकल, मुझे नहीं लगता कि अभी भी कई HTTP 1.0 क्लाइंट हैं।

+1

+1 के साथ उपयोग कर सकते हैं, इस बारे में पता नहीं था। –

+0

और यहां तक ​​कि अधिकांश HTTP 1.0 क्लाइंट्स ने अभी भी इस फ़ील्ड का उपयोग करने में विस्तार किया है - केवल पुराना, अपडेट नहीं किया गया HTTP 1.0 इसे आपूर्ति नहीं करता है। – Konerak

+2

@ पेक्का कोई बड़ा सौदा नहीं है। इस तरह का काल्पनिक क्लाइंट अधिकांश साइटों (वर्चुअल होस्ट आधारित वाले नामों) तक नहीं पहुंच पाएगा, इसलिए, यह सिर्फ अव्यवहारिक है। –

8

संपादित: मैं ठीक किया मानी: होस्ट शीर्ष लेख HTTP 1.0 अनुरोधों में मौजूद नहीं है। @ ब्रूनो का जवाब देखें। HTTP_HOST साथ क्योंकि सुरक्षा विचारों के स्थान पर मेरा छोड़कर

केवल मुद्दों है कि मुझे पता है सुरक्षा के मुद्दों, नहीं अनुकूलता होते हैं की हूँ।

सुरक्षा समस्याएं इस तथ्य से उत्पन्न होती हैं कि उपयोगकर्ता द्वारा HTTP_HOST भेजा जाता है। यदि वेब सर्वर गलत तरीके से सेट अप किया गया है और/या छोटी गाड़ी है, मनमानी HTTP_HOST मान इसे आपकी साइट/स्क्रिप्ट पर बना सकते हैं (विस्तृत चर्चा के लिए उदा। here देखें)। आपके आवेदन के लिए तैयार होने की जरूरत है।

<?php 
    $allowed_hosts = array("domain1.com", "domain2.com", "domain3.com"); 

    if (!in_array(strtolower($_SERVER["HTTP_HOST"]), $allowed_hosts)) 
    die ("Unknown host name ". $_SERVER["HTTP_HOST"]); 
+1

+1 आपके उत्तर के लिए भी, हालांकि यह पुरानी ब्राउज़र संगतता के बारे में नहीं है, यह निश्चित रूप से "HTTP_HOST कितना विश्वसनीय है?" – Bruno

+0

@Pekka Thats जो मैं करना चाहता हूं। यह एक और प्रश्न भी लाता है मेरे दिमाग में यह अपाचे को इसे हल करने की अनुमति देना बेहतर होगा और HTTP_SERVER को इसके बजाय सर्वर उपनाम का उपयोग करना बेहतर होगा। मेरे साथ एकमात्र मुद्दा host.conf गतिशील बना रहा है। –

+0

@ हस्तशिल्प जो काम करेगा, लेकिन आपको हर कल्पनीय डोमेन नाम के लिए एक vhost सेट करना होगा। लेकिन जैसा कि आपको सभी डोमेन नामों को httpd.conf में किसी भी तरह से पेश करने की आवश्यकता होगी .... –

1

पेक्का का उत्तर अधिक दिलचस्प लगता है, लेकिन ऐसा लगता है कि आप जानना चाहते हैं कि कौन से ब्राउज़र http 1.1 का समर्थन करते हैं और जो नहीं। गूगल पर इस मिला: http://www.1-script.com/forums/Browser-Support-for-HTTP-1-1-article34982--8.htm

एक नोट, कि धागे से: "एक HTTP 1.0 ब्राउज़र गैर-डिफ़ॉल्ट वर्चुअल होस्ट पर नहीं मिल सकता है।" इसका मतलब है कि एक ब्राउज़र जो http 1.1 का समर्थन नहीं करता है, साझा किए गए सर्वर पर किसी भी वेबसाइट तक नहीं पहुंच सकता है, जहां तक ​​मुझे पता है। साझा मेजबानों पर वेबसाइटों की बहुत सारी चीज़ें हैं। इसके अलावा सबडोमेन भी हो सकता है (हालांकि कोई निश्चित नहीं) HTTP_HOST var का उपयोग करके "पता चला"।

इन्हें पढ़ने के बाद, मुझे नहीं लगता कि कोई भी आजकल पुराने ब्राउज़र का उपयोग करता है, तो उनके लिए असंभव होगा वास्तव में वेब :) नेविगेट

+0

प्रश्न का उत्तर देता है, अभी भी बहुत सारे मोबाइल फोन हैं जो HTTP/1.0 – stillstanding

+0

का उपयोग करते हैं, क्या आपके पास कोई है? मैं curios हूँ अगर वे वास्तव में सबडोमेन तक नहीं पहुंच सकते हैं। – Quamis

+0

हाँ अपाचे अधिकांश वर्चुअल होस्ट्स के लिए HTTP_HOST का उपयोग करता है, यदि इसकी आईपी आधारित होस्टिंग है तो यह DNS रिवर्स लुकअप का उपयोग कर सकती है जो वैसे भी ओवरहेड बनाती है –

0

यह है कि मैं क्या एक similar question में जवाब है: अन्य प्रयोजनों के लिए


अपने आप को इस में देख रहे हैं:

"HTTP/1.0 उपयोग में है प्रॉक्सी द्वारा, कुछ मोबाइल क्लाइंट, और आईई जब प्रॉक्सी का उपयोग करने के लिए कॉन्फ़िगर किया गया। तो 1.0 अभी भी वेब पर ट्रैफ़िक के गैर- ट्रैफ़िक% के लिए खाता प्रतीत होता है। ... हां, अभी भी कई 1.0 ग्राहक हैं।"

स्रोत (जुलाई 2009): http://groups.google.com/group/erlang-programming/msg/08f6b72d5156ef74

:-(


मैं व्यक्तिगत रूप से मिल रहा है काफी कुछ HTTP/एक लापता HTTP_HOST :-(

के साथ अपनी साइटों पर 1.0 अनुरोध
संबंधित मुद्दे