Мое приложение JavaScript должно определить длину ресурса до, загружая его с помощью Ajax. Обычно это не проблема, вы просто делаете запрос HEAD и извлекаете .Как получить доступ к заголовку Content-Length из запроса Ajax для перекрестного домена?
var xhr = $.ajax({type:"HEAD", url: "http://own-domain/file.html"})
xhr.getResponseHeader("Content-Length")
// "2195"
Однако ресурсы хранятся на другом сервере для клиента. (Я контролирую сервер). Поэтому я использую CORS для создания запросов ajax для перекрестных доменов и настроил сервер для ответа на предпроверочные запросы на запросы HEAD и запросы GET/POST с пользовательскими заголовками.
Это работает прекрасно, в основном, но я не могу найти способ извлечь Content-Length
из ответа ГОЛОВЫ при работе с 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)
Право. Считаете ли вы, что это должно быть зарегистрировано как ошибка в Webkit? –
Да. Сначала попробуйте выполнить поиск, я подумал, что раньше видел ошибку, но я не могу ее найти сейчас. – monsur