Блог

Простой прокси для API-вызовов из JavaScript

JavaScript замечательно подходит для работы с API, но тут есть один существенный нюанс: можно смело обращаться только к API своего собственного сайта. При работе с чужими API в дело вступает технология CORS, т.е. Cross-origin resource sharing, также известная как SameOrigin. Суть её в том, что чужой сервер должен быть дружелюбно настроен к чужим запросам, иначе браузер клиента не даст использовать полученный результат.

Эффективность этого ограничения, с моей точки зрения, довольно сомнительна, т.к. запросы к чужому серверу можно осуществлять и без браузера - а именно он отвечает за работу этого механизма. Поэтому CORS создает больше проблем для "честных" разработчиков, нежели для хакеров. Но, что есть, то есть: технология работает, и с ней приходится считаться.

Периодически возникают ситуации, когда надо обойти эту технологию. Например, если я делаю часть сайта, которая использует API заказчика, и хочу ему продемонстрировать результат, выложив его на своём сайте. Или просто хочу протестировать, как оно будет работать, до того, как заказчик скопирует код себе на сайт.

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

Достаточно скопировать файл прокси на свой сайт, и отправлять запросы ему, добавив GET-параметр "url=" с адресом реального API. Взять файл можно здесь: https://github.com/szyryanov/simple-php-proxy. Только не забывайте задать адрес сервера API в коде самого прокси (переменная $URL_START) - иначе на вашем сервере образуется открытый прокси, которым смогут воспользоваться какие-нибудь хакеры :) А вот если задать адрес - возможность использования останется, но только к одному конкретному серверу, т.е. для хакеров он станет бесполезен.

<< Вернуться на предыдущую страницу