Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Некоторые сервера VK отдают неверные CORS заголовки

#javascript #вконтакте #chrome_extension #cors


Я разрабатываю музыкальное расширение для Google Chrome и столкнулся с такой проблемой.

Музыка ВКонтакте располагается на нескольких серверах, которые находятся в зоне
*.vk-cdn.net

Некоторые сервера поддерживают CORS и таким образом я могу получить их контент по JS


  accept-ranges:bytes
  access-control-allow-methods:GET, HEAD, OPTIONS
  access-control-allow-origin:*
  cache-control:max-age=604800
  content-length:5292838
  content-type:audio/mpeg
  date:Wed, 13 Jan 2016 20:32:05 GMT
  expires:Wed, 20 Jan 2016 20:32:05 GMT
  last-modified:Wed, 13 Jan 2016 16:45:43 GMT
  server:nginx
  status:200 OK
  version:HTTP/1.1  


А некоторые сервера, которые на Apache, не отдают этих заголовков


  Accept-Ranges:bytes
  Cache-Control:max-age=1468800
  Connection:keep-alive
  Content-Length:655080
  Content-Type:audio/mpeg
  Date:Wed, 13 Jan 2016 20:34:52 GMT
  ETag:"4b23d502-9fee8"
  Expires:Sat, 30 Jan 2016 20:34:52 GMT
  Last-Modified:Sat, 12 Dec 2009 17:38:10 GMT
  Server:Apache  


Таким образом, запросы к таким серверам через JS невозможны, так как Chrome c 45
версии это запретил. Получаем ошибку о том, MediaElementAudioSource выдает нули вместо
контента, из-за CORS


  MediaElementAudioSource outputs zeroes due to CORS access restrictions
  for https://psv4.vk.me/c613321/u3197020/audios/00a66935ba83.mp3


Браузер все равно проигрывает эти файлы, что меня подталкивает на мысль, что возможность
получить доступ к содержимому все-таки есть. 

Я пытался общаться с поддержкой ВК, но получил ответ, что на баг-трекер сайта давно
забили и никто исправлять не будет это.

Можно ли как-то обойти это ограничение?
    


Ответы

Ответ 1



Вы можете поставить где-нибудь свой прокси сервер, который будет проксировать аудио с серверов ВК и добавлять заголовки чтоб всё корректно работало через AJAX. Для таких целей наверно лучше всего подойдет nginx

Комментариев нет:

Отправить комментарий