Прошлой весной начал разбираться с OpenAPI и решил написать схему для Яндекс.Музыки. Проблема была лишь в том, что из-за CORS нормально пользоваться сгенерированной документацией невозможно. Чтобы отключить CORS в хроме приходилось запускать его с флагом -disable-web-security.
Решение скажем честно - не очень 👎. Правильным решением будет написание прокси-сервера, на котором были бы разрешены кросдоменные запросы. Другими словами, вместо того, чтобы напрямую обращаться к серверу Я.Музыки, на котором запрещены крос-доменные запросы, мы обращаемся к прокси-серверу, который перенапрявляет все наши вопросы к Я.Музыке и возвращает нам ответ. Так как CORS, есть только в браузере, то мы свободно отправляем запросы с нашего прокси сервера на сервер Я.Музыки.
Собственно, вчера я и написал такой прокси-сервер на основе библиотеки cors-anywhere и захостить его на хероку (https://yandex-music-cors-proxy.herokuapp.com/).
Теперь все запросы можно проксировать следующим образом:
https://yandex-music-cors-proxy.herokyapp.com/<any-url>
Например:
https://yandex-music-cors-proxy.herokuapp.com/https://api.mu...
Ресурсы:
- Исходники прокси сервера
- Исходники OpenAPI-схемы Я.Музыки
- OpenAPI документация Я.Музыки
Ещё по теме:
- cors-anywere
- Getting Started on Heroku with Node.js
- GitHub Integration (Heroku GitHub Deploys)