2009-12-24 11 views
7

मेरी साइटें एक सबडोमेन (yyy.example.com) चलाती हैं, लेकिन मुझे मुख्य डोमेन (example.com) से सीएसएस फ़ाइलों को शामिल करने की आवश्यकता है। हम एक सीएमएस चलाते हैं जो मुझे पूर्वावलोकन चरण के दौरान किसी भी सर्वर-साइड सामान नहीं देता है, इसलिए मैं https पर एक पृष्ठ भेज रहा हूं जिसमें http पर एक सीएसएस आयात शामिल है। इसके कारण मेरे सभी आईई उपयोगकर्ताओं को मिश्रित सामग्री चेतावनी मिलती है।आईई में मिश्रित सामग्री चेतावनी के बिना डोमेन भर में सीएसएस फ़ाइलों से लिंक?

क्या प्रत्येक क्लाइंट मशीन पर डोमेन के लिए अलग-अलग सुरक्षा सेटिंग्स को बनाए रखने के अलावा, इसे रोकने के लिए मेरे पास कोई क्लाइंट साइड तरीका है?

+0

स्टैक ओवरफ्लो, दान में आपका स्वागत है। – Sampson

+0

अच्छा सवाल। मुझे आशा है कि कोई जानता है कि कैसे। –

+0

स्वागत जोनाथन के लिए धन्यवाद। –

उत्तर

9

सीएसएस लिंक में प्रोटोकॉल-रिश्तेदार यूआरएल का उपयोग करें। इस प्रकार

<link rel="stylesheet" type="text/css" href="http://example.com/style.css"> 

की

तो

<link rel="stylesheet" type="text/css" href="//example.com/style.css"> 

बजाय यह स्वचालित रूप से माता पिता अनुरोध है, जो रूप में अच्छी तरह HTTPS के लिए ठीक से काम करना चाहिए के प्रोटोकॉल का चुनाव करेगा।

+1

वाह। मैंने इससे पहले कभी नहीं सुना है! –

+0

धन्यवाद बलुस। मैंने अभी इस विधि को आज दोपहर का परीक्षण किया, और इस मुद्दे को हल किया! क्या ऐसा करने का कोई कारण नहीं है? –

+0

हां, जब आप केवल एक प्रोटोकॉल तक चिपके रहते हैं :) – BalusC

3

जहां तक ​​मुझे पता है, उस चेतावनी से बचने का कोई तरीका नहीं है। यह विशेष रूप से इस उद्देश्य के लिए है: आपको इस तथ्य की चेतावनी है कि भले ही आपका मानना ​​है कि आपका पृष्ठ एसएसएल-एन्क्रिप्टेड है, इसकी कुछ सामग्री नहीं है। आपको या तो HTTP पर मूल पृष्ठ (अनुशंसित नहीं) की सेवा करने की आवश्यकता होगी, या HTTPS पर सीएसएस फ़ाइल की सेवा करनी होगी।

+0

हम ऐसा करते हैं (एचटीटीपीएस पर सीएसएस फ़ाइल की सेवा करें।) बस अपने प्रमाण को वाइल्डकार्ड में बदलें ताकि सभी सबडोमेन की अनुमति हो सके। – seanmonstar

+0

हालांकि यह समस्या हल करेगा, एचटीटीपीएस पर सीएसएस और जावास्क्रिप्ट की सेवा करना उनके डाउनलोड समय को धीमा कर देगा, क्योंकि एचटीटीपीएस धीमी प्रक्रिया है। यह उन पृष्ठों के लिए विशेष रूप से कठिन है जो ढांचे का उपयोग करते हैं जिनमें कई छोटी फ़ाइलें होती हैं। –

+2

मैं तर्क दूंगा कि HTTP की तुलना में HTTPS की धीमी गति सैल फ़ाइलों के लिए लगभग नगण्य है। साथ ही, ब्राउज़र जेएस और सीएसएस फाइलों को कैश करेगा, इसलिए आपको पहली बार दंड भुगतना होगा। –

1

जब आप कहते हैं कि आप "सर्वर-साइड" सामान नहीं कर सकते हैं, तो क्या आपका मतलब है कि आप अपने सीएमएस को स्पर्श नहीं कर सकते हैं, या आपके पास अपने HTTP सर्वर पर रूट पहुंच नहीं है?

क्योंकि अगर आपके पास अपने HTTP सर्वर तक पहुंच है, तो आप अपाचे का उपयोग कर रहे हैं तो reverse proxy (mod_proxy के साथ) सेट कर सकते हैं। यह आपको अपने एचटीएमएल में सापेक्ष पथ का उपयोग करने की अनुमति देगा, जबकि HTTP सर्वर किसी भी "रिमोट" स्थान पर प्रॉक्सी के रूप में कार्य करेगा। वास्तव में इस तकनीक का उपयोग कुछ क्रॉस-साइट स्क्रिप्टिंग समस्याओं को कम करने के लिए भी किया जा सकता है।

mod_proxy में एक रिवर्स प्रॉक्सी सेट करने के लिए मूलभूत कॉन्फ़िगरेशन निर्देश प्रॉक्सीपास है। आप आमतौर पर इसका इस्तेमाल देंगी:

ProxyPass  /css/  http://example.com/css_dir/ 

इस मामले में, ब्राउज़र https://yyy.example.com/css/main.css का अनुरोध किया जाएगा लेकिन सर्वर http://example.com/css_dir/main.css के लिए एक प्रॉक्सी के रूप में कार्य करके इस काम करेगा। यह ब्राउज़र चेतावनी नहीं बढ़ाएगा, और एसएसएल के साथ ठीक काम करता है।

+0

यह एक अच्छा विचार है, लेकिन जहां तक ​​मेरा संबंध है, सीएमएस एक बंद बॉक्स है, इसलिए मैं कोई भी पुनर्लेखन नहीं कर सकता। –

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