w Praktyce
9 godz. 47 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperW pierwszym rozdziale tego kursu poznasz bardzo dokładnie koncepcje programowania zorientowanego obiektowo. W jednej z lekcji, omówimy wszystkie z nich na przykładzie pseudo-kodu, niezwiązanego bezpośrednio z językiem JavaScript. Dzięki temu zrozumiesz, jak realizowane jest programowanie obiektowe w wielu popularnych językach programowania. Dowiesz się czym jest klasa, obiekt, instancja, właściwości, metody, a także zrozumiesz takie pojęcia jak dziedziczenie, polimorfizm, abstrakcja czy enkapsulacja. Następnie przejdziemy już do języka JavaScript i do zrozumienia tego, w jaki sposób powyższe koncepcje są w nim zaimplementowane. Język ten nie jest bowiem w 100% klasycznie obiektowy, jak np. język PHP. Co jednak bardzo istotne, JavaScript implementuje tzw. dziedziczenie prototypowe, którego bardzo dogłębne zrozumienie, gwarantuje zrozumienie całego języka JavaScript. Dowiesz się zatem czym są konstruktory i jak je tworzyć, a także jak korzystać z prototypu funkcji. Dzięki temu będziemy mogli wykorzystać obiektowość do własnych celów, co później w praktycznych przykładach uczynimy.Na przestrzeni kilku lekcji zobaczysz krok po kroku, jak w języku JavaScript zaimplementować dziedziczenie wielokrotne. Taka wiedza absolutnie otwiera oczy na zależności rządzące obiektami w tym języku. Dowiesz się również jak rozszerzać wbudowane konstrukcje języka JavaScript czy Obiektowego Modelu Dokumentu, a także kiedy powinniśmy to robić. Omówimy problemy, jakie mogą się pojawiać przy korzystaniu ze słowa kluczowego this, a także sposoby ich rozwiązania. Poznasz 3 bardzo ważne metody funkcji: call, apply i bind.JavaScript ma wiele specyficznych cech, a jedną z nich są tzw. domknięcia. W jednym z rozdziałów zobaczysz, do czego one służą i kiedy powinniśmy z nich korzystać. Dopełnimy tym również wiedzę związaną z programowaniem obiektowym i tzw. prywatnością.Rozdział o obiektowości został celowo umieszczony na samym początku kursu, gdyż zrozumienie tych koncepcji pozwala patrzeć zupełnie inaczej na wszystkie pozostałe. Po tym rozdziale przejdziemy do omówienia bardzo popularnego, lekkiego formatu wymiany danych JSON. Dowiesz się jak wygląda składnia tego formatu, a także jak współpracuje on z językiem JavaScript.Następnie przejdziemy do bardzo ekscytującego tematu, jakim jest technologia AJAX. Dzięki niej możemy wysyłać zapytania do serwera i pobierać dane, bez przeładowywania witryny. Do zrozumienia AJAXa niezbędne jest jednak rozumienie działania protokołu HTTP, na którym opiera się sieć www. Z tego powodu, jedna z lekcji została w 100% poświęcona HTTP i dowiesz się z niej jak wysyłane są żądania i odpowiedzi, a także tzw. nagłówki, które będą dla nas niezwykle istotne. Chwilę później omówimy również bardzo ważne mechanizmy: Same- origin policy i CORS, które blokują możliwość wysyłania żądań AJAX do pewnych serwerów. Kiedy już będziesz rozumiał te niezwykle istotne koncepcje, przejdziemy do napisania pierwszego kodu, wysyłającego asynchroniczne żądanie do serwera. Następnie dowiesz się jak wysyłać, a także odbierać dane z serwera, umieszczać je na stronie oraz śledzić postęp zarówno wysyłania, jak i pobierania danych.W tym rozdziale na przestrzeni kilku lekcji napiszemy swoją własną bibliotekę AJAX, która pozwoli w niezwykle łatwy sposób wysyłać i odbierać dane. Skorzystamy w niej już w kolejnej lekcji, gdzie zobaczysz, jak wysłać wiadomość e-mail z użyciem AJAX i PHP po stronie serwera. Gotowy skrypt, będziesz mógł umieścić na własnej stronie internetowej. Na zakończenie tego rozdziału omówimy również dokładnie niezwykle sprytną technikę o nazwie JSONP, które pozwala wysyłać tzw. żądania “cross-origin”. Przekonasz się dlaczego taka technika powstała i jak współpraca klienta i serwera potrafi obejść zabezpieczenia przeglądarek.Kolejnym tematem omówionym w kursie będą Cookies, czyli tzw. ciasteczka. Dowiesz się czym są, w jakim celu istnieją, a także jak są ustawianie przez serwer. Co ciekawe, również z poziomu języka JavaScript będziemy mieli do nich dostęp, a zatem zobaczysz jak je ustawiać i odczytywać. Na tym etapie przyda nam się wiedza zdobyta w lekcji o protokole HTTP.W kursie znajdziesz również rozdział poświęcony w 100% wyrażeniom regularnym. To mechanizm języka, który pozwala dopasowywać tekst do definiowanych przez nas wzorców. Wyrażenia regularne potrafią być bardzo zaawansowane i odstraszać, dlatego rozłożymy je na czynniki pierwsze, byś dokładnie je zrozumiał. Na przestrzeni wielu lekcji dowiesz się jakie są specjalne symbole wykorzystywane przy wyrażeniach regularnych, czym są kwantyfikatory, kotwice czy np. grupowanie. Następnie przejdziemy do wykorzystania wyrażeń regularnych w języku JavaScript. Poznasz zarówno metody obiektu RegExp jak i te dostępne na obiekcie String. Dzięki nim będziemy mogli wyszukiwać np. adresów e- mail w podanym tekście, usuwać je lub zamieniać na coś innego. Jako praktyczny projekt, stworzymy “Antybluzgacz”. Wykorzystamy do tego celu programowanie obiektowe, a sama aplikacja będzie pozwalała filtrować wpisywany przez użytkownika tekst wiadomości i wyłapywać w nim niecenzuralne słowa. Wszystkie z nich zamienimy na przypadkową reprezentację znaków, np. $#!@%^. Ten projekt pokaże Ci nie tylko jak korzystać z wyrażeń regularnych, ale także jak profesjonalnie pracować z kodem JavaScript.W przedostatnim rozdziale tego kursu znajdziesz lekcje związane z dobrymi praktykami pracy. Omówimy tzw. “strict mode” języka JavaScript, zagadnienia związane z minifikacją i konkatenacją skryptów, sprawdzaniem poprawności pisanego kodu oraz delegacją zdarzeń DOM.Na końcu kursu znajdziesz 10 krótkich lekcji z serii Tips & Tricks, które przybliżą Ci wiele ciekawych konstrukcji języka JavaScript, a także technik na rozwiązanie różnych problemów. Zobaczysz np. jak wczytać obrazy w tle czy jak wyświetlić na pasku tytułowym witryny migające powiadomienie.Podsumowując, kurs ten jest dopełnieniem wiedzy z zakresu języka JavaScript i Obiektowego Modelu Dokumentu z kursu “JavaScript od Podstaw”. Poprzedni kurs nie jest wymagany, lecz jego przerobienie z pewnością pozwoli dużo lepiej przyswoić wiedzę z tego kursu, gdyż były one przygotowywane równocześnie. Oba te materiały, pozwolą od zera, wskoczyć na naprawdę wysoki poziom rozumienia języka, a także dobrych praktyk pisania kodu.
Do tego kursu mogą jednak przystąpić wszystkie osoby, które znają już podstawy języka HTML, CSS i JavaScript i chcą poszerzyć swoją wiedzę, a także spojrzeć zupełnie inaczej na ten język.
W tej lekcji pokażę ci już na żywym organizmie w jaki sposób ustawiamy ciasteczka zarówno po stronie
serwera jak i z poziomu JavaScript.
Jestem teraz znowu na localhost i tak musimy sobie ten nasz przykład skopiować.
Musimy to serwować z jakiegoś serwera i będzie nam to w tym momencie działać.
Chcę Ci pokazać jeden fajny panel który znajduje się w Chrome Developer Tools mianowicie Resources.
I tutaj możemy przejść do cookies i do localhost.
Czy dla tej domeny bo w naszym przypadku pamiętaj localhost to jest tak jakby domena tak jak eduweb.pl czyli
host po prostu czyli mogłoby tutaj być eduweb.pl gdybyśmy na taką stronę przeszli
localhost jak widzisz this side has no cookies nic nie zostało ustawione.
Wspominałem ci że to serwer ustawia ciasteczka chociaż możemy to zrobić też z poziomu javascriptu odświeżmy
tę stronę.
Przejdźmy do panelu Network.
Jak widzisz wysyłamy zapytanie pod cookies czyli właśnie pod ten adres i co zostało nam odesłane wejdziemy
tutaj.
W headers może zrobić trochę więcej miejsca
i tutaj jeżeli chodzi o response headers czyli te które zostały odesłane mamy różne nagłówki ale nie ma
tam nagłówka o którym Ci mówiłem czyli set cookie bo to musi być po stronie serwera zrobione.
Teraz wyobraź sobie że właśnie wysłaliśmy do serwera formularz z losowaniem i serwer chce nam ustawić
ciasteczka z sesją po to aby później wiedzieć kiedy będziemy wchodzić na tą stronę że jesteśmy zalogowani.
Przejdźmy sobie tutaj.
Mam tutaj właśnie indeks php dlatego php żeby móc korzystać z kodu PHP.
Jak widzisz jest to zwykły dokument tutaj ale w znaczniku PHP mogę skorzystać z takiej funkcji PHP
jak setki która właśnie taki nagłówek nam ustawi.
Tutaj podajemy jego nazwę.
Możesz go nazwać dowolnie.
Ja nazwałem session i tutaj żeby to był jakiś losowy ciąg znaków skorzystałem z funkcji MD5 i rand czyli
losowo liczba zostanie zwrócona opuszczona przez MD5.
Następnie podajemy tutaj czas właśnie w sekundach zrobiłem to takim zapisem.
Nie martw się jak to dokładnie działa w języku PHP.
Ale widzisz mamy funkcję gdzie podaję parametry pierwszy drugi trzeci i następnie taki slash jeszcze i dla
całej domeny localhost w której jest serwowany ten plik będę chciał ustawić ciasteczko.
I teraz jeżeli sobie odświeżymy naszą stronę to przed przysłaniem tego dokumentu zostanie przesłany nagłówek
co będziemy mogli zobaczyć odświeżam.
I teraz przejdźmy do Kukiz tutaj i zauważ co się stało.
Otóż serwer w response header przysłał nam nagłówek set cookie równy session czyli dokładnie to co tutaj podałem.
Następnie równa się taki długi ciąg.
To jest właśnie wygenerowane tutaj z MD5 i rund i następnie czas czyli kiedy wygasa takie ciasteczko.
Tutaj nie ma max age ale jak pokazywałem w prezentacji ale expires i następnie path to jest wszystko oddzielone
takimi średnikami.
I teraz przeglądarka internetowa kiedy otrzymała taki nagłówek to te informacje sobie odpowiednio zapisała
właśnie w ciasteczku czyli takim niewielkim pliku tekstowym.
Jeżeli teraz przejdziemy do resources to tutaj cookies i localhost mamy ciasteczko.
Session to jest jego nazwa tutaj jest wartość tutaj dla jakiej domeny ono obowiązuje.
Tutaj ścieżka expires i tak dalej czyli bardzo ciekawa sprawa że to jest tutaj zapisane i możemy to
wcisnąć tutaj kliknąć na to i np. usunąć sobie takie ciasteczko.
Natomiast zauważ co stanie się kiedy odświeżę stronę.
Ta wartość za każdym razem się zmienia.
Czyli za każdym razem mamy nowe ciasteczko.
Normalnie tak by to nie działało bo serwer po zalogowaniu się na przykład przysłał nam session.
To oczywiście jest dowolna nazwa ale serwer przysyła nam na przykład sesję logowania dzięki temu za
każdym razem zaraz ci to pokaże.
Kiedy się łączymy z serwerem to wysyłamy mu tą sesję i on może sprawdzić czy jesteśmy zalogowani.
Więc serwer na pewno za każdym razem by nam takiego ciasteczka nie ustawiał.
To byłoby od razu ustawione.
I jeżeliby takiego ciasteczka nie było a byśmy się zalogowali to od nowa byłoby ustawione tutaj po otworzeniu
za każdym razem jest ono nadpisywane.
Jak możesz zobaczyć.
Teraz jak wspomniałem przeglądarka będzie to ciasteczko za każdym razem przesyłać do serwera jeżeli
przejdziemy do Network i odświeżymy to zobaczmy że tutaj scripts kiedy przeglądarka wysyłała żądanie
czyli request headers przesłała coś takiego jak cookie.
Mówiłem ci że mamy nagłówek cookie i tutaj jest session równa się i to jest ta wartość.
I teraz nieważne czy wysyłamy żądanie pod skrypty czy to będzie obrazek czy to będzie CSS z każdym żądaniem
przeglądarka oprócz innych nagłówków wysyła nagłówek cookie i ten nagłówek możemy po stronie serwera
odczytać.
Dzięki temu wiemy na przykład że ktoś już jest zalogowany bo przesyła id takiej sesji a po stronie
serwera w bazie danych możemy pod taką sesją znaleźć że jest to np. Jan Kowalski.
Na tym to mniej więcej polega w przypadku logowania czyli jak widzisz tutaj już nie ma tych informacji
które były w nagłówku set cookie który z kolei przeglądarka nam przysłała.
W tym miejscu go nie ma ale jest ono tutaj tak set cookie w tym miejscu o co chodzi że serwer ustawił na
path na całą domenę.
Otóż nieważne jaką stronę będziemy serwować.
Jeśli byśmy tutaj weszli w jakąś podstronę dalej w adresie to również to ciasteczko będzie tam przesyłane.
Ale ja taką stronę przygotowałem specjalnie zauważ tutaj na razie jest to wykomentowane przejdźmy do podstrona.
W ten sposób i tutaj zerkniemy.
Czy nadal mamy zapisane ciasteczko.
Jak widzisz to ciasteczka które wcześniej nam serwer ustawił jest tutaj ciągle zapisane kiedy będę odświeżał.
Ono się nie zmienia dlatego że odświeżany ten plik a tutaj set cookie nie jest za każdym razem ustawiane czyli
mamy ciasteczko ustawione przez ten plik.
Natomiast jeżeli tutaj sobie usuwa komentarz i nie podałem w PHP parametru odpowiedzialnego za path to zobaczysz
że ścieżka zostanie domyślnie ustawiona na podstrona czyli teraz odświeżmy.
Mamy nowe ciasteczko.
Jak widzisz drugie ciasteczko i tutaj mamy cookies.
Podstrona to oznacza tylko tyle że jeżeli przejdę teraz z powrotem do strony głównej w ten sposób to tutaj
nie ma tego ciasteczka.
Czyli jeżeli będziemy serwować jakieś zasoby takie jak skrypty i one nie będą z ukośnik podstrona
to kiedy przeglądarka wysyła żądanie po taki skrypt to nie będzie dołączać tego ciasteczka w request headers.
Natomiast jeżeli będziemy serwować jakieś skrypty które będą ukośnik podstrona to wtedy będzie wysyłać
ciasteczko tam właśnie zapisane bo ono zostało przypisane tylko właśnie do podstrony przekroczyłem szybko
na stronę dokumentacji PHP aby zerknąć jakie są kolejne parametry.
Czyli ja podałem tutaj na przykład path.
Kolejny parametr po path w przypadku PHP to będzie domena czyli również możemy tutaj dla pewnej domeny to wszystko
ustawić.
I gdybyśmy byli na domenie np. eduweb pl to mógłbym tutaj podać.
Ja podam tutaj null bo będę chciał kolejne parametry ale mógłbym tutaj podać np. kropka eduweb pl i wtedy zapisany
w ten sposób ciasteczko byłoby też wysyłane do block eduweb pl pliki do eduweb pl itd.
Natomiast po domenie mamy coś takiego jak secure.
I to jest sprawa o tyle ważna że jeżeli tutaj przypiszemy true to to ciasteczka zostanie ustawione na secure.
Zobaczmy czy to w ogóle nam zadziała kiedy jesteśmy na HTTP a nie na HTTPS bo to jest też ważne zerknijmy
ale na stronie głównej przejdziemy do resources.
Jak widzisz tego ciasteczka nie ma.
Musielibyśmy być na protokole bezpiecznym HTTPS bo jeżeli ustawiamy ciasteczko na secure to oznacza
że ono może być wysyłane później do serwera wyłącznie wtedy kiedy jesteśmy na bezpiecznym szyfrowaniu
HTTPS a nie na zwykłym protokole.
Więc tutaj tak mogę podać false.
Zobaczymy jeszcze jeden parametr po secure mamy coś takiego jak HTTP only.
I to jest bardzo ciekawy parametr.
Jeśli tutaj podam true takie ciasteczko zostanie dla nas ustawione.
Zobaczmy i jak widzisz ma ona tutaj zaznaczone http only.
To oznacza że do tego ciasteczka z poziomu JavaScript odwołać nie będziemy mogli zaraz ci pokaże jak
możemy do ciasteczek się odwoływać z JavaScript.
Ale jeżeli serwer ustawi właśnie że ma być to HTTP only to nie będzie można się do niego odwołać.
Zauważ jak to wygląda w nagłówku który został przysłany serwer przysłał nam nagłówek set cookie session id
tutaj expires itd a na końcu wystarczy że dodał coś takiego i przeglądarka ustawiając to ciasteczka owszem
ustawi go ale nie pozwoli żadnym skryptom się do niego odwołać.
Ok więc to sobie może usuniemy.
Odświeżmy raz jeszcze mamy tutaj w resources takie oto ciasteczko.
Mam nadzieję że załapałeś koncepcję tych ciasteczek może być więcej i one z każdym żądaniem do serwera
będą przesyłane jeżeli będzie ich więcej to będą one oddzielane silnikami.
I teraz pokażę ci jak takie ciasteczka możemy w skrócie odczytać.
Otóż poprzez document cookie możemy je odczytać session równa się i tutaj po średniku mogą być podane kolejne
wartości chyba że jakieś ciasteczko jest oznaczone jako HTTP only wtedy w ogóle nie możemy go odczytać
w kolejnej lekcji pokaże ci jak możemy w wygodny sposób sobie ciasteczka odczytywać bo troszkę kuriozalnym
jest że tak długo ciasteczka istnieją tak długo mamy przeglądarki i rozbudowane API a nikt nie wymyślił
jeszcze takiej możliwości abyśmy mogli napisać document cookie np. session i odwołać się do tej wartości.
To jest tylko taki ciąg który musimy sami sparsować.
Oczywiście w internecie jeśli wpisze sobie cookie js to znajdziesz mnóstwo bibliotek które nam to ułatwią
bo są one dobrze stworzone przetestowane i warto z nich korzystać.
Ale ja pokażę ci jak taką prostą stworzyć samemu.
I teraz chciałbym stworzyć sobie funkcję która będzie nam ustawiać ciasteczka bo mówiłem ci że możemy
napisać document cookie równa się.
Ale tutaj musimy podać odpowiedni zapis taki jak podał nam serwer set cookie.
Czyli musimy taki zapis podać aby ciasteczka ustawić.
Z tego powodu nie jest to aż tak łatwe ale zrobimy to teraz w naszej tutaj pliku scripts js nazwiemy
sobie funkcję set cookie i ona będzie przyjmować bardzo wiele parametrów nazwa wartość potem ile dni.
Takie ciasteczka ma być aktywne.
Potem ścieżka potem domena i potem czy ma być ono bezpieczne czyli secure.
Możemy coś takiego ustawić.
Natomiast ważne jest że jeżeli jesteśmy teraz na niebezpiecznym szyfrowaniu czyli HTTP to nie możemy
ustawić bezpiecznego ciasteczka musielibyśmy być na https natomiast będę chciał aby te parametry podawać
i aby sprawdzać czy one są i odpowiednio później dodawać więc od czego zaczniemy.
Zacznijmy może od sprawdzenia czy w ogóle wspierane są ciasteczka czy są one włączone w przeglądarce
bo użytkownik może je wyłączyć.
I możemy to sprawdzić poprzez navigator kropka cookie enabled czyli zrobimy sobie tutaj if not czyli zaprzeczymy,
jeśli navigator cookie enabled zwróci falls zaprzeczymy to sobie to chcemy zakończyć.
Funkcję czyli napisze return.
Jeżeli ktoś skorzysta z naszej funkcji ale ciasteczka są wyłączone to nic nie będziemy zwracać.
W przeciwnym wypadku będę chciał sobie tutaj stworzyć zmienną cookie i możesz się domyślić że te dwa
parametry są najważniejsze name oraz value np. session itd.
Więc będziemy chcieli dodać name plus równa się plus value w ten sposób.
Natomiast co jest niesłychanie ważne to musimy to przepuścić przez funkcję anchored uri component
bo mówiłem ci że ustawiając takie ciasteczko zerkniemy sobie tutaj musi być ono oddzielone takimi oto
średnikami.
Natomiast jeżeli wartość takiej np. jakiegoś ciągu znaków jak jest tutaj będzie miał w sobie średnik
to będziemy mieli błąd a jeżeli użyjemy encode uri component to średniki są zamieniane na coś zupełnie innego.
Dlatego stworzę sobie tutaj skrót do tej funkcji bo będziemy parokrotnie z niej korzystać.
Napiszę e równa się encode uri component i już z niej korzystaliśmy w tym kursie i teraz będę mógł w skrócie pisać
i wywoływać tę funkcję.
Czyli name chce w ten sposób zapisać i podobnie value.
Gdyby tam były jakieś średniki to tak jak wspomniałem zostaną odpowiednio zakodowane.
Czyli zaczęliśmy robić swoje ciasteczka i tyle teoretycznie by wystarczyło gdybyśmy ciasteczko chcieli
ustawić zróbmy na końcu return cookie żeby zobaczyć jak ono wygląda.
Czyli mamy funkcję set cookie tutaj napiszmy sobie teraz set cookie na przykład first name równa się Jan i zostanie
nam zwrócone first name Jan jeżeli tutaj byłby średnik tak jak ci wspominałem to zostanie odpowiednio zakodowane.
I o to nam chodziło.
Okay przejdźmy dalej i teraz już będziemy sprawdzać czy pozostałe parametry zostały podane bo one mogą
być opcjonalne.
Więc przejdźmy tutaj.
Przede wszystkim sprawdzimy czy type of days to jest number bo jeżeli ktoś nic tutaj nie poda albo poda
null bo będzie chciał podać np. ten parametr a tego nie może wtedy podać null to wtedy nie chcemy tego
liczyć.
Czyli sprawdźmy czy type of days to jest number.
Jeżeli tak to będziemy chcieli te dni odpowiednio przeliczyć jeżeli ktoś poda na przykład 10 dni to
będziemy tam musieli odpowiednio przeliczyć ja może tutaj stworzyć nowy obiekt daty bo to nam będzie potrzebne
napiszemy datę równa się new date czyli nowy obiekt daty i teraz na tym obiekcie poprzez date set time
będę chciał ustawić odpowiednią ilość milisekund bo set timeout tak właśnie przyjmuje mili sekundy.
I tutaj wkleje sobie taki wzór to nie jest nic skomplikowanego z tej daty dzisiejszej jaką pobrałem
liczbę milisekund od 1970 roku w pierwszym kursie javascript o tym mówiłem i do niej chcemy dodać.
Jeśli ktoś poda na przykład dziesięć dni przeliczone to przez 1000 60 60 24 czyli na milisekundy to bez
problemu przeliczymy i ustawiamy to na tym obiekcie daty i teraz na samym końcu będziemy chcieli do naszego
ciasteczka czyli cookie plus równa się dodać średnik spację i napiszemy expires to co już widziałeś
w przeglądarce równa się Plus i zauważ że tam była taka ciekawa data.
Zobaczmy jak to wyglądało tak to wyglądało.
Taką datę możemy sobie pobrać obiektu date poprzez metodę tego obiektu która nazywa się to gmt string.
W ten sposób będzie OK i będziemy mieli zwrócone to ciasteczko więc teraz jeszcze sobie odświeżmy spróbujmy tutaj
ustawić jeśli nie podame żadnych dni to wygląda to tak jeśli podamy np. powiedzmy 100 dni czyli tyle
to ciasteczka ma być zapisane w przeglądarce po takim czasie przeglądarka przestaje wysyłać do serwera
to jak widzisz poprawnie to zostało tutaj dodane i taki ciąg zaczynamy tworzyć dalej jest już dużo prościej
dlatego w kolejce wszystko jeżeli ktoś poda ścieżkę czyli path to chcemy ją po prostu dodać w ten sam
sposób.
Jeżeli poda domenę to również i jeżeli poda secure to chcemy dodać secure czyli nie dodajemy samej wartości
jeżeli będzie true to oddajemy tylko coś takiego HTTP only nie możemy ustawiać bo są to ciasteczka do których
JavaScript nie ma dostępu tak jak ci wspominałem.
Więc również nie może ich ustawiać i teraz na końcu zamiast zwracać poprzez return odwołajemy się do
document cookie równa się cookie czyli ciasteczka które tutaj kontrolowaliśmy i teraz nam to powinno działać.
Przejdźmy sobie do resources.
Mamy tutaj tylko sesję i teraz dodajemy sobie własne ciasteczko poprzez set cookie napiszemy znowu first
name Jan ciasteczko ma być np. 100 dni.
Następnie mieliśmy parametr zerknijmy sobie ścieżka.
Możemy ją przypisać na przykład w ten sposób następnie zobaczmy kolejny parametr domena jesteśmy na
localhost więc możemy tutaj napisać kropka localhost i wtedy wszystkie domeny które mogłyby być miałyby
również takie ciasteczko wysyłane do każdego żądania i secure nie będziemy ustawiać.
Więc zróbmy to w ten oto sposób i zobaczmy czy takie ciasteczko zostaną ustawione.
Jak widzisz nie zostało ustawione a to oznacza że popełniliśmy gdzieś jakiś błąd.
Spróbujmy teraz usunąć któryś parametr i już wiem gdzie jest błąd.
Otóż nie możemy z ukośnik cookies ustawić ciasteczka dla tylko ukośnik.
Tego nie możemy zrobić więc to musimy usunąć.
Dajmy sobie tutaj null.
Natomiast tutaj możemy podać domenę powinno nam to zadziałać zerknijmy do resouces również nam to nie zadziałało
więc spróbujmy usunąć dwa parametry które tutaj się znajdują.
Przejdźmy do resources i teraz takie ciasteczko zostało ustawione poprawnie.
Jak widzisz to co wpisywaliśmy nie jest dozwolone z tego miejsca w którym jesteśmy.
A więc stąd nie możemy dla całej domeny ustawić takiego oto ciasteczka.