Как получить доступ к клиентскому интерфейсу API Карт Google из библиотеки
Я хочу отправлять запросы на API Google Directions. Google предоставляет клиентскую библиотеку Node.JS для API. Однако этот AP только на стороне сервера. Попытка использовать его из скрипта браузера приводит к сбою CORS. Многочисленные прошлые ответы (такие как этот) указывают, что эту библиотеку просто нельзя использовать таким образом.
Альтернативой является использование клиентского JavaScript API. Тем не менее, это требует добавления <script>
тег к корню документа. Это неправильный уровень абстракции для моих нужд. Я хотел бы использовать метод из библиотеки или dot-js
файл вместо.
Следуя приведенному здесь совету, я хотел бы спросить: есть ли модуль через npm
Я могу использовать для запроса на стороне клиента API Google Directions?
2 ответа
Наивно получить доступ к API Google Maps Directions со стороны клиента. В веб-браузерах реализована политика единого источника, которая требует, чтобы любые запросы к домену исходили из одного домена. Требуется между доменами по умолчанию запрещено. Междоменные запросы можно включить на уровне сервера, установив правильные заголовки CORS на конечной точке, но серверы Google Maps решают этого не делать.
Есть два способа обойти это. Одним из них является завершение запроса с использованием библиотеки аутентификации API Google. Однако я не мог заставить это работать.
Что работало, так это использование обратного прокси. Этот обходной путь фактически упоминается на начальной странице API Google Directions (хотя и косвенно). Вам нужно будет настроить сервер, который перенаправляет любые запросы на запрос API, а затем возвращает этот запрос API первоначальному запрашивающему. Поскольку теперь это запрос на стороне сервера, SOP не будет применяться, и вам будет хорошо.
Для примера реализации посмотрите этот репозиторий на GitHub.
https://developers.google.com/maps/documentation/directions
Это веб-сервис API направлений. Не требует добавления <script>
тег.
Вы можете сделать прямые запросы к сервису согласно примеру:
https://maps.googleapis.com/maps/api/directions/json?origin=75+9th+Ave+New+York,+NY&destination=MetLife+Stadium+1+MetLife+Stadium+Dr+East+Rutherford,+NJ+07073&key=YOUR_API_KEY
как только вы сгенерировали ключ API и заменили YOUR_API_KEY
в запросе с вашим собственным ключом.