2016-01-15 6 views
5

मेरे सीएसएस https://www.site1.com पर होस्ट की है (यह एक प्रमाणीकृत डोमेन है) और यह woff/ttfhttps://media.site1.com (यह भी प्रमाणित है पर स्थित फ़ाइलों का उपयोग करता - www की तुलना में एक ही लेख)। इन साइटों से कनेक्ट करने के लिए, मुझे एक प्रमाणीकृत प्रॉक्सी का उपयोग करना होगा।मेरे सीएसएस नहीं कर सकते लोड वेब फ़ॉन्ट WOFF फ़ाइलें एक अन्य https पर स्थित + प्रमाणन सर्वर (CORS संबंधित)

मैं क्रॉस डोमेन लदान करने के लिए CORS सक्षम करने के लिए है, लेकिन ऐसा लगता है कि मैं किसी अन्य डोमेन से संसाधन लोड नहीं कर सकता है, तो इस डोमेन बुनियादी प्रमाणीकृत है और मैं प्रमाणित प्रॉक्सी का उपयोग करें।

मैं अपाचे में जोड़ लिया है निम्नलिखित निर्देशों:

SetEnvIf Origin "^http(s)?://(.*)$" origin_is=$0 
Header set Access-Control-Allow-Origin %{origin_is}e env=origin_is 
Header set Access-Control-Allow-Credentials "true" 
Header set Access-Control-Allow-Headers "*" 

यह सब उत्पत्ति की अनुमति चाहिए, लेकिन जब सीएसएस woff फाइल लोड (GET अनुरोध के माध्यम), मैं मिलता है:

अनुरोध (केवल दिलचस्प हेडर):

GET file.woff HTTP/1.1 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 
Host media.site1.com 
Origin https://www.site1.com 
Proxy-Authorization Basic XXX1234567 
Connection keep-alive 
Cache-Control max-age=0 

रिस्पांस (क) Firebug या Httpfox द्वारा देखा रहा है:

HTTP/1.0 401 Unauthorized 
WWW-Authenticate BASIC realm="Unspecified" 
Server BigIP 
Connection close 
Content-Length 0 

मैं मैन्युअल www पर जाने से पहले media.site1.com को प्रमाणित करते हैं, तो परिणाम एक ही है। ऐसा लगता है कि ब्राउज़र "मीडिया" सर्वर को मूल-लेख प्रमाण-पत्र नहीं भेजता है।

वहाँ किसी भी अतिरिक्त हेडर मैं बुनियादी प्रमाणीकरण के साथ और एक उद्यम प्रमाणित प्रॉक्सी के साथ अंत में, यह सुनिश्चित करें कि WOFF फ़ाइलें किसी अन्य स्थान से लोड किए गए हैं स्थापित करने के लिए कर रहे हैं?

उत्तर

3

हम सिर्फ एक ही स्थिति में फंस गयी।

W3C कल्पना के अनुसार, सीएसएस फ़ाइलों से जुड़ा हुआ फोंट "गुमनाम" मोड में लोड किया जाना चाहिए: https://www.w3.org/TR/2013/CR-css-fonts-3-20131003/#font-fetching-requirements तो मूल रूप से ब्राउज़र सामान्य रूप से कभी नहीं प्रमाणीकरण कुकी भेज देंगे। https://media.site1.com

  • पर फ़ॉन्ट फ़ाइलों के लिए

    1. अक्षम प्रमाणीकरण यह एक हैक है और मैं पूरी तरह से यकीन है कि यह काम करेगा नहीं कर रहा हूँ:

      तरह से मैं इसे समझ, आप 2 विकल्प हैं। आप सीएसएस फ़ाइल से पहले फ़ॉन्ट लोड करने के लिए AJAX अनुरोध जारी करने का प्रयास कर सकते हैं, जैसा कि यहां बताया गया है: https://css-tricks.com/preventing-the-performance-hit-from-custom-fonts/ बेशक, इस आलेख में वे इसे प्रदर्शन कारणों से कर रहे हैं, लेकिन फिर भी, विचार फ़ॉन्ट फ़ाइल को अलग से लोड करना है, इसलिए कि जब सीएसएस फ़ाइल लोड हो जाती है तो ब्राउज़र इसे अपने कैश से प्राप्त कर लेगा। इसके अलावा https://stackoverflow.com/a/7190487, यह देखते हुए कि आम तौर पर आप नीचे आपके पेज और जावास्क्रिप्ट के शीर्ष पर सीएसएस फ़ाइलें लोड, पहले लोड हो रहा है और जारी करने से सीएसएस फ़ाइल को रोकने के लिए: आप अपने AJAX कॉल में withCredentials हेडर को जोड़ने के लिए, के रूप में यहाँ वर्णित आवश्यकता हो सकती है असफल अनुरोधों को आपको AJAX कॉल की सफलता कॉलबैक पर गतिशील रूप से लोड करने की आवश्यकता होगी।

    मुझे पता है कि दूसरा समाधान बहुत अधिक परेशानी जैसा लगता है, लेकिन मैं बेहतर तरीके से नहीं आ सकता था।

  • +0

    क्यों इस सीमा केवल वेब फोंट के साथ पेश किया गया था? सीएसएस, जेएस आदि के साथ क्यों नहीं ..? –

    +0

    @ elad.chen मैं केवल अनुमान लगा सकते हैं कि W3C कल्पना इरादा फोंट के लेखकों को आसानी से और स्वतंत्र रूप से होने के लिए अन्य सर्वर है, जो एक तरह से समझ में आता है से लोड करने योग्य। – AsGoodAsItGets

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