Ostatnio pracowałem nad projektem, który komunikował się z zewnętrznym API, który, podobnie jak wiele API, odsyła wiele danych, z których część zawiera adres URL produktu powiązanego z API.
Zwracany interfejs API nie był prawidłowym docelowym adresem URL. Zamiast tego był to adres URL, który ostatecznie przekierowywał na inny adres URL.
Wyobraź sobie, że trafisz, powiedzmy, na acme.site-info.com i skierujesz go bezpośrednio do acme.com. Robimy to ręcznie przez cały czas, ale musiałem uzyskać rzeczywiste – lub ostateczne – miejsce docelowe bezpośrednio z adresu URL.
A znalezienie miejsca docelowego przekierowania za pomocą PHP jest łatwe; jednak zakłada to tylko jedno przekierowanie.
Niemniej jednak, oto jak to zrobić.
Zwróć uwagę, że następujące założenie zakłada, że znasz cURL.
A jeśli nie, korzystanie z funkcji jest dość łatwe.
curl jest używany w wierszach poleceń lub skryptach do przesyłania danych. Jest również używany w samochodach, telewizorach, routerach, drukarkach, sprzęcie audio, telefonach komórkowych, tabletach, dekoderach, odtwarzaczach multimedialnych i stanowi szkielet transferu internetowego dla tysięcy aplikacji, które codziennie wpływają na miliardy ludzi.
Co więcej, podręcznik PHP zawiera wiele informacji na ten temat, które możesz przejrzeć w razie potrzeby (i prawdopodobnie będziesz ich potrzebować również w przyszłości).
W każdym razie, oto kod z małym wyjaśnieniem po kodzie :
Funkcja wykonuje następujące czynności:
- akceptuje adres URL podany przez API,
- pobiera nagłówki z żądania do adresu URL przez cURL,
- udostępnia nagłówki, które możemy odczytać, aby pobrać adres URL
Zauważ też, że oddzielam adres URL na podstawie ukośnika, abym mógł odczytać tylko domenę, ponieważ nie martwię się o nic po domenie głównej (więc jeśli domena ma rozszerzenie index .php, default. aspx rozszerzenie itp.), to mogę go wykorzystać w mojej pracy w razie potrzeby.
Po drugie, zauważ, że nie wiem, czy to zadziała dla więcej niż jednego przeskoku. Więc jeśli masz wiele przekierowań, możesz powtórzyć tę funkcję wiele razy. Nie wiem, ale pomyślałem, że warto o tym wspomnieć.