Generalnie są dwa rodzaje API:
1. API dla przeglądarek, które ma ustawione wszystkie potrzebne nagłówki CORS (patrz ten wątek na forum z wczoraj) lub działa na zasadzie dziwnych i semi-bezpiecznych mechanizmów typu JSONP.
2. API dla aplikacji działających poza przeglądarką, opartych o połączenia HTTP - np. server-side jakiegoś serwisu może odpytywać API innego serwisu, a pobrane dane zapisywać w lokalnej bazie (cache) i prezentować użytkownikom owego serwisu.
Bardzo dużo API udostępnianych przez różne serwisy jest tego drugiego rodzaju, tj. nie są zupełnie przystosowane do współpracy z przeglądarkowym Same Origin Policy, a więc nie da się z nich bezpośrednio korzystać z JavaScriptu umieszczonego na losowej stronie i wykonywanego w jej kontekście z przeglądarki.
Powody tego mogą być różne, ale główne z nich to:
- Takie API może wymagać uwierzytelnienia, a klucz/hasło do niego powinno być tajne (więc nie powinno się umieszczać klucza w kodzie wysyłanym do użytkowników razem z resztą strony, tylko powinien być ukryty po stronie serwerowej).
- Twórcy serwisu nie chcą obsługiwać tysięcy/milionów użytkowników innych serwisów (to jednak koszty dla łącza/prądu/etc) i wolą, żeby obcy serwis po stronie serwerowej pobrał sobie dane i we własnym zakresie rozesłał je do własnych użytkowników.
- Używanie danego API jest pozbawione sensu w kontekście przeglądarki (to oczywiście wynika ze specyfiki danego API).
Jeśli koniecznie chcesz pobawić się różnymi API z przeglądarki, możesz to zrobić na dwa sposoby:
- Zrobić sobie proxy na własnym serwerze, które będzie przekazywać zapytania API do innych serwerów i odpowiadać przeglądarce w obrębie tego samego kontekstu co reszta strony (i wykonywanego JS).
- Zamiast testować na stronie, można testować w rozszerzeniu do przeglądarki - takowym zazwyczaj można nadać uprawnienia pozwalające na dostęp do innych kontekstów (i obejścia Same Origin Policy) w ten czy inny sposób.
Powodzenia :)