Моему приложению 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)