2011-01-31 14 views
15

मेरे जावास्क्रिप्ट एप्लिकेशन को से पहले संसाधनों की लंबाई निर्धारित करने की आवश्यकता है इसे अजाक्स के साथ डाउनलोड करना। आमतौर पर यह कोई समस्या नहीं है, आप केवल एक HEAD अनुरोध करते हैं और Content-Length निकालते हैं।मैं क्रॉस डोमेन अजाक्स अनुरोध से सामग्री-लंबाई शीर्षलेख तक कैसे पहुंच सकता हूं?

var xhr = $.ajax({type:"HEAD", url: "http://own-domain/file.html"}) 
xhr.getResponseHeader("Content-Length") 
// "2195" 

हालांकि, संसाधन क्लाइंट को एक अलग सर्वर पर संग्रहीत किए जाते हैं। (एक सर्वर मैं नियंत्रण)। तो मैं क्रॉस डोमेन AJAX अनुरोधों को बनाने के लिए CORS का उपयोग कर रहा हूं, और हेड अनुरोधों के लिए प्रीफलाइटिंग अनुरोधों और कस्टम हेडर के साथ POET अनुरोधों के जवाब देने के लिए सर्वर सेट अप किया है।

है कि मुख्य में महान काम कर रहा है, लेकिन मैं एक तरह से प्रमुख प्रतिक्रिया से Content-Length निकालने जब CORS के साथ काम करने को खोजने के लिए प्रतीत नहीं कर सकते हैं:

var xhr = $.ajax({type:"HEAD", url: "http://other-domain/file.html"}) 
xhr.getResponseHeader("Content-Length") 
// ERROR: Refused to get unsafe header "Content-Length" 

मैं में विभिन्न हेडर स्थापित करने के साथ प्रयोग किया है preflighting या जवाब में, इस तरह के रूप

Access-Control-Expose-Headers: Content-Length 

विनिर्देश सुझाव देने के लिए लगता है जो इसे उपलब्ध बनाने चाहिए। लेकिन कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, मैं क्लाइंट को सामग्री-लंबाई शीर्षलेख उपलब्ध नहीं कर सकता। कोई सुझाव?

(क्रोम 8)

उत्तर

3

मैं सभी ब्राउज़रों में CORS प्रतिक्रिया हेडर समर्थन मिल गया है गाड़ी होने के लिए। क्रोम/सफारी में, मुझे getAllResponseHeaders() के परिणामस्वरूप केवल सरल प्रतिक्रिया शीर्षलेख (http://www.w3.org/TR/cors/#terminology) दिखाई देता है, भले ही "एक्सेस-कंट्रोल-एक्सपोज़-हेडर" हेडर प्रतिक्रिया में सेट है। और फ़ायरफ़ॉक्स 3.6.13 में, getAllResponseHeaders() कुछ भी वापस नहीं करता है (यहां तक ​​कि सरल प्रतिक्रिया शीर्षलेख भी नहीं)। एक कामकाज के रूप में, मुझे लगता है कि आप सामग्री-लंबाई को शामिल करने के लिए सरल प्रतिक्रिया शीर्षकों में से एक को अधिभारित कर सकते हैं, लेकिन इससे अन्य समस्याएं हो सकती हैं, और फिर भी फ़ायरफ़ॉक्स को ठीक नहीं किया जाएगा।

+0

दाएं। क्या आपको लगता है कि यह वेबकिट पर एक बग के रूप में दायर किया जाना चाहिए? –

+0

हां। पहले खोज करने का प्रयास करें, मैंने सोचा कि मैंने इससे पहले एक बग देखा था, लेकिन मुझे अब यह नहीं मिल रहा है। – monsur

5

मैं एक ही समस्या हो रही थी, जब तक मैं एक धागा कहीं और है कि मुझे सिखाया मेरे .htaccess पर इस लाइन को जोड़ने के लिए मिला:

Header add Access-Control-Expose-Headers "Content-Length" 

फिर बूम, यह भी निश्चित कर ली।

+0

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow- विवरण के लिए पाठक – broofa

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