Я делаю запрос на получение на сайте с поддержкой SSL на apache (так что wirehark не дает мне ничего полезного).
В моем журнале доступа Apache SSL я вижу следующую запись:
1.2.3.4 - my.username [15/Nov/2012:16:52:01 +0000] "GET /uploads/file.mp3
HTTP/1.1" 206 534400 "https://site.com/uploads/layla.mp3"
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko)
Ubuntu/12.04 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19"
Почему это происходит? Я не знаком с кодом ответа HTTP 206, но поискав в Интернете, я вижу, что это частичные запросы GET содержимого. Я правильно понимаю, мой браузер делает частичный запрос GET, а не полный файл. Это правильно? Если да, то это проблема браузера или веб-сервер дает указание моему браузеру сделать это? Я также тестировал в Firefox, и в обоих браузерах мне не отправляли файл.
Если я переименую файл в file.jpg, я могу загрузить его через браузер и переименовать в .mp3, и он будет воспроизводиться.
Как я могу решить эту проблему?
Из RFC2616:
10.2.7 206 Частичное содержимое
Сервер выполнил частичный запрос GET для ресурса. Запрос ДОЛЖЕН включать поле заголовка Range (раздел 14.35), указывающее желаемый диапазон, и МОЖЕТ включать поле заголовка If-Range (раздел 14.27), чтобы сделать запрос условным.
Вы можете использовать инструмент браузера для проверки заголовков запросов и ответов для ресурса, чтобы убедиться, что они соответствуют RFC; результат скажет вам, в чем проблема.