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