2011-01-31 20 views
15

Benim JavaScript uygulaması Ajax ile indirmeden önce bir kaynak uzunluğunu belirlemek gerekiyor. Normalde bu bir sorun değil, sadece bir HEAD isteği yapar ve Content-Length'u çıkarırsınız. Bununla birlikte, kaynaklar istemciye farklı bir sunucuda depolanır. Ancak, kaynakların farklı bir sunucuda saklanması gerekir. (Kontrol ettiğim bir sunucu). Yani çapraz etki alanı ajax istekleri yapmak için CORS kullanıyorum ve HEAD istekleri ve özel başlıklarla GET/POST istekleri için ön kontrol isteklerine yanıt vermek üzere sunucuyu kurdum.İçerik Uzunluğu üstbilgisine çapraz etki alanı Ajax isteğinden nasıl erişebilirim?

ana büyük çalışıyor ama CORS ile çalışırken bir yol BAŞ yanıtından Content-Length ayıklamak bulmak gibi olamaz

:

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

Ben çeşitli başlıkları ayarı ile denemişlerdir şartname önermek gibi görünüyor ön kontrol veya yanıtta gibi

Access-Control-Expose-Headers: Content-Length 

kullanılabilir hale gerekir. Ama ne yaparsam yapayım, Content-Length üstbilgisini istemciye sunabiliyorum. Baska öneri?

(Krom 8) arabası olarak tüm tarayıcılarda CORS yanıt başlık desteği buldum

cevap

3

. Krom/Safari'de, ben sadece) getAllResponseHeaders sonucu (basit yanıt başlıklarını (http://www.w3.org/TR/cors/#terminology) görürken bile "Erişim Kontrol-Açığa-Başlıkları" başlığı yanıtta ayarlanır. Ve Firefox 3.6.13'te getAllResponseHeaders() herhangi bir şey döndürmez (basit yanıt başlıklarını bile). Bir geçici çözüm olarak, basit yanıt başlıklarından birini içerik uzunluğunu içerecek şekilde aşırı yükleyebileceğinizi, ancak başka sorunlara neden olabileceğini ve yine de Firefox'u düzeltemeyeceğinizi varsayalım. Ben benim .htaccess bu satırı ekleyin öğretti başka bir yerde iplik bulana kadar

+0

Sağ. Bunun Webkit'te bir hata olarak görülmesi gerektiğini düşünüyor musunuz? –

+0

Evet. Önce aramayı deneyin, daha önce bunun hakkında bir hata gördüğümü sandım, ama şimdi bulamıyorum. Ayrıntılar için – monsur

5

ben de aynı sorunu vardı:

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

Sonra BUMU, sabit var.

+0

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers – broofa

İlgili konular