UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU
Wprowadzenie
UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU
Często na stronach internetowych znaleźć można odnośniki do zasobów korzystających z protokołów innych niż http
. Przykładem jednego z nich jest protokół mailto
:
<a href="mailto:[email protected]">Napisz do webmastera</a>
Twórcy witryn internetowych używają odnośników mailto:
, kiedy chcą zapewnić użytkownikom wygodny sposób na wysłanie wiadomości e-mail z poziomu strony WWW. Kiedy użytkownik aktywuje odnośnik, przeglądarka zwykle uruchamia domyślny program pocztowy określony w ustawieniach systemu operacyjnego. Można to określić jako desktopowy sposób obsługi protokołów.
Aplikacje WWW również mogą zapewnić obsługę takich protokołów. Od kiedy coraz więcej rodzajów aplikacji przenoszonych jest do środowiska WWW, potrzeba takiej integracji jest coraz bardziej wyraźna. W istocie, istnieje szereg aplikacji WWW do obsługi poczty elektronicznej, które mogłyby przetwarzać odnośniki mailto
.
Rejestracja
UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU
Ustawienie aplikacji jako mechanizmu obsługującego protokół nie jest skomplikowane. W zasadzie wystarczy, by witryna skorzystała z metody registerProtocolHandler()
, by zarejestrować się w przeglądarce jako potencjalny mechanizm obsługi danego protokołu. Na przykład:
navigator.registerProtocolHandler("mailto", "https://www.example.com/?uri=%s", "Przykładowa poczta");
gdzie parametrami są:
- protokół (uwaga, bez dwukropka - przyp. tłum.);
- szablon adresu URL mechanizmu obsługi protokołu. Znaki "%s" zostaną zastąpione pełną zawartością atrybutu
href
odnośnika; tak powstały adres URL wywołany zostanie metodą GET; - przyjazna dla użytkownika nazwa mechanizmu obsługi protokołu
Przeglądarka wykonując tę metodę wyświetli okno, w którym użytkownik będzie mógł wyrazić zgodę na zarejestrowanie aplikacji WWW jako mechanizmu obsługi protokołu. Firefox wyświetla następujące pytanie w obszarze powiadomień:
Przykład
UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="pl"> <head> <title>Przykład rejestracji obsługi protokołów</title> <script type="text/javascript"> navigator.registerProtocolHandler("fikcyjny", "https://starkravingfinkle.org/projects/wph/handler.php?value=%s", "Fikcyjny protokół"); </script> </head> <body> <h1>Przykład rejestracji obsługi protokołów</h1> <p>Strona ta zainstaluje mechanizm obsługi protokołów dla protokołu <code>fikcyjny:</code>.</p> </body> </html>
Aktywacja
UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU Od tej pory kiedykolwiek użytkownik aktywuje odnośnik do zasobu o zarejestrowanym protokole, przeglądarka przekieruje żądanie do adresu URL dostarczonego podczas rejestracji. Firefox domyślnie poprosi uprzednio użytkownika o potwierdzenie tej czynności.
Przykład
UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="pl"> <head> <title>Test obsługi protokołów</title> </head> <body> <p>Widzieliście już kiedyś <a href="fikcyjny:to%20nie%20istnieje">coś takiego</a>?</p> </body> </html>
Obsługa protokołu
UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU
Kolejnym etapem jest obsłużenie żądania. Przeglądarka pobiera atrybut href
odnośnika, łączy go z szablonem adresów URL podanym podczas rejestracji mechanizmu obsługi i wysyła do serwera żądanie HTTP GET z wynikowym adresem. Dla powyższego przykładu przeglądarka wyśle żądanie GET o następującym adresie:
https://starkravingfinkle.org/projects/wph/handler.php?value=fikcyjny:to%20nie%20istnieje
Po stronie serwera można odebrać przekazany adres URL i wykonać żądane akcje.
href
. Oznacza to, że serwer będzie musiał podczas przetworzyć otrzymany adres URL i oddzielić protokół od danych.Przykład
UWAGA: PROSZE NIE UZYWAC EDYTOWANIA FRAGMENTOW, PSUJE ONO TRESC ARTYKULU
<?php $value = ""; if ( isset ( $_GET["value"] ) ) { $value = $_GET["value"]; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="pl"> <head> <title>Obsługa protokołów - przykład</title> </head> <body> <h1>Obsługa protokołów - przykład</h1> <p>Strona ta otwierana jest po aktywowaniu odnośnika do zasobu o protokole <code>fikcyjny:</code>. Otrzymane dane:</p> <textarea> <?php echo(urldecode($value)) ?> </textarea> </body> </html>