Моему 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)