Как я могу получить доступ к заголовку Content-Length из междоменного запроса Ajax?

Моему приложению JavaScript необходимо определить длину ресурса , прежде чем загрузить его с помощью Ajax. Обычно это не проблема, вы просто делаете запрос HEAD и извлекаете Content-Length .

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

Однако ресурсы хранятся на сервере, отличном от клиента. (Сервер, который я контролирую). Поэтому я использую CORS для выполнения междоменных запросов ajax и настроил сервер для ответа на запросы предварительной проверки для запросов HEAD и запросов GET / POST с настраиваемыми заголовками.

В основном это отлично работает, но я не могу найти способ извлечь Content-Length из ответа HEAD при работе с CORS:

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

Я экспериментировал с настройкой различных заголовки в предпечатной проверке или в ответе, например

Access-Control-Expose-Headers: Content-Length

, который, как кажется, предлагается в спецификации, должен сделать его доступным. Но что бы я ни делал, мне кажется, что я не могу сделать заголовок Content-Length доступным для клиента. Есть предложения?

(Chrome 8)

15
задан Daniel Lucraft 31 January 2011 в 11:22
поделиться