2011-10-27 2 views
21

मैंने अभी अपनी साइट पर एक एसएसएल जोड़ा है। जब मैं https://mydomain.com पर जाता हूं तो मुझे टेक्स्ट दिखाई देता है लेकिन कोई सीएसएस या छवियां नहीं होती हैं। यह एक समर्पित सर्वर पर है और मेरे पास कोड का पूर्ण नियंत्रण है।क्यों छवियों और सीएसएस HTTPS के तहत नहीं दिखते हैं?

वर्तमान में सभी पथ सापेक्ष हैं। जब मैं उन फ़ाइलों पर सीधे HTTP या HTTPS का उपयोग कर रहा हूं, तो मैं छवियों और सीएसएस को देख सकता हूं। लेकिन जब मैं एक पृष्ठ लोड करता हूं तो वे लोड नहीं हो रहे हैं ...

जब मैं फ़ायरबग का उपयोग करता हूं और नेट में देखता हूं, तो मैं प्रत्येक छवि 302 के लिए देखता हूं। इसका क्या मतलब है?

यह सुनिश्चित करने के लिए कि मुझे http और https डिस्प्ले साइट को समान रूप से सुनिश्चित करने के लिए क्या परिवर्तन करने की आवश्यकता है?

क्या मैं सभी पथ पूर्ण करता हूं? क्या सभी को प्रभावित करने के लिए एक ही बदलाव करने का कोई तरीका है या मुझे वास्तव में जाना है और प्रत्येक को बदलना है?

धन्यवाद।

उत्तर

10

क्या आपके पास हॉटलिंक सुरक्षा है? यदि आपने इसे अक्षम करने का प्रयास किया है। और देखें कि यह मदद करता है या नहीं।

+0

इसे अक्षम करने के बजाय आप इस तरह कुछ लिख सकते हैं (रीट्राइटकंड% {HTTP_REFERER}^http (s)?: // (www \।)? XXX.com – user2992220

+4

हॉटलिंक सुरक्षा क्या है? –

2

आपको सबकुछ पूर्ण करने की आवश्यकता नहीं है, लेकिन आपको यह सुनिश्चित करना होगा कि आपका सीएसएस और छवियां एसएसएल पर पहुंच योग्य हों। उन्हें सीधे एक्सेस करने का प्रयास करें, या यह पता लगाने के लिए कि यह कहां से लोड करने का प्रयास कर रहा है, फ़ायरबग या एक समान ब्राउज़र टूल का उपयोग करें। "प्रोटोकॉल-रिश्तेदार यूआरएल" का उपयोग करने पर विचार करें ताकि सीएसएस, छवियां, और इस तरह हमेशा उसी प्रोटोकॉल (http या https) का उपयोग पृष्ठ के रूप में किया जा सके। http://paulirish.com/2010/the-protocol-relative-url/

+0

मैं अपनी छवियों और सीएसएस दोनों HTTP और HTTPS के साथ देख सकता हूं लेकिन स्पष्ट रूप से वे लोड नहीं होते हैं। साथ ही जब मैं अपने एचटीटीपीएस पेज पर जाता हूं और एफएफ में स्रोत देखता हूं और फिर एक सीएसएस लिंक पर क्लिक करता हूं तो यह मुझे HTTP पर ले जाता है ... लेकिन अगर मैं एक लिंक पर क्लिक करता हूं, तो HTTPS पृष्ठ पर यह एक और पेज HTTPS के रूप में लोड करता है। मैं थोड़ा उलझन में हूँ। – santa

1

मुझे एक ही समस्या थी। यदि पृष्ठ https में खोला गया है तो सीएसएस/जेएस को भी https में लोड किया जाना चाहिए। इसका मतलब है, सीएसएस/जेएस लोड करने के लिए इसे उसी प्रोटोकॉल का उपयोग करना चाहिए क्योंकि यह एचटीएमएल/जेएसपी/जेएसएफ आदि पेज खोलने के लिए उपयोग किया जाता है। तो समाधान सीएसएस/जेएस के लिए पूर्ण यूआरएल का उपयोग नहीं करना है। बजाय इस तरह रिश्तेदार यूआरएल का उपयोग करें:

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

या इस का उपयोग करें:

<% String contextPath=request.getScheme()+"://"+request.getServerName()"+":"+request.getServerPort()+request.getContextPath(); 

<link type="text/css" rel="stylesheet" href="<%=contextPath>/css/style.css" />

इस छवि को लोड करने की समस्या का समाधान करना चाहिए।

+0

आप पूर्ण इंगित करने के लिए एक डबल फॉरवर्ड स्लैश का उपयोग कर सकते हैं लेकिन उसी प्रोटोकॉल के साथ: जैसे "//css/myfile.css"। – nickdnk

2

यदि आप एक पूर्ण लिंक (जैसे http://www.yourcompany.net/yourcompany.css) के साथ अपने सीएसएस पर इंगित कर रहे हैं तो यह सीएसएस को https में नहीं दिखाएगा। यदि आप इसे पूर्ण https://www.yourcompany.net/yourcompany.css बनाते हैं, तो यह दोनों कॉलों में काम करेगा।