UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISHttp használata
Dr. Bilicki Vilmos
Szoftverfejlesztés Tanszék
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISAz előző előadás összefoglalója
4Angular Routing, Navigation
■ Router import
■ Konfiguráció
■ Router outlet
■ Router link
■ Aktív router link
■ Router állapot
■ Aktivált útvonal
■ Router események
2019. 04. 16. Webfejlesztés keretrendszerek 2
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISÖsszefoglaló
4Angular HTTP
■ Szolgáltatás igénybevétele
■ JSON feldolgozása, ellenőrzése
■ Hiba kezelés
■ Hiba részletek
– retry()
■ Observables és operátorok
■ Nem JSON adat kérése
■ POST, DELETE, PUT
■ A kérés konfigurálása - kérés, válasz elkapása
■ Előrehaldás események
■ XSRF
■ Saját süti, fejléc
4Service worker
2019. 04. 16. Webfejlesztés keretrendszerek 3
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISHTTP
4A legtöbb kliens oldali alkalmazás HTTP segítségével kommunikál a háttér
rendszerrel.
4A modern web böngészők két megoldást biztosítanak a HTTP kezelésére:
■ XMLHttpRequest interfész
■ fetch() API
4Az @angular/common/http-ben lévő HttpClient API egy egyszerű az
XMLHttpRequest interfészre építő API-t biztosít
2019. 04. 16. Webfejlesztés keretrendszerek 4
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISXMLHttpRequest
2019. 04. 16. Webfejlesztés keretrendszerek 5
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISfetch()
2019. 04. 16. Webfejlesztés keretrendszerek 6
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISHttpClient
2019. 04. 16. Webfejlesztés keretrendszerek 7
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISKonfig
2019. 04. 16. Webfejlesztés keretrendszerek 8
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISTípus kényszerítés
2019. 04. 16. Webfejlesztés keretrendszerek 9
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISA teljes válasz kiolvasása
2019. 04. 16. Webfejlesztés keretrendszerek 10
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISHibakezelés
2019. 04. 16. Webfejlesztés keretrendszerek 11
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISHiba részletek
2019. 04. 16. Webfejlesztés keretrendszerek 12
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISTranziens hibakezelés
2019. 04. 16. Webfejlesztés keretrendszerek 13
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISNem JSON adat
2019. 04. 16. Webfejlesztés keretrendszerek 14
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISAdatok feltöltése
2019. 04. 16. Webfejlesztés keretrendszerek 15
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISAdatok törlése
2019. 04. 16. Webfejlesztés keretrendszerek 16
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISAdatok frissítése
2019. 04. 16. Webfejlesztés keretrendszerek 17
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISPUT vs. POST
PUT POST
A RFC-2616 alapján a PUT művelettel a küldött entitást a megadott kérés URI-val megadott címen kell tárolni, vagy frissíteni (amennyiben van ilyen elem).
PUT /questions/{question-id}
A POST művelet segítségével új elemet töltünk fel az URI-val megadott helyre. Az URI a csoport URI- ja.
POST /questions
A PUT művelet idempotens, akárhányszor ismételjük a vége ugyanaz lesz.
A POST NEM idempotens. Ahányszor meghívjuk annyiszor tölti fel.
Akkor használjuk a PUT-ot, ha meglévő elemet szeretnénk módosítani. A PT teljesen kicseréli, amennyiben csak módosítani szeretnénk akkor használjuk a PATCH-et.
Akkor használjuknk POST-ot amikor erőforrás gyűjteményben gyermek elemet szeretnénk hozzáadni.
A PUT idempotens, így gyorstótárazható. A válasz nem gyorsítótárazható. (igen, de konfigurálni kell)
A módosítás műveletekhez célaszerű PUT-ot használni.
A LÉTREHOZÁS műveletkehez használjuk a POST-ot.
2019. 04. 16. Webfejlesztés keretrendszerek 18
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISPUT vs POST
2019. 04. 16. Webfejlesztés keretrendszerek 19
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISFejlécek konfigurálása
4Nem tudjuk a meglévő fejléceket módosítani.
4A set() metódus egy másolatot ad vissza ezt módosíthatjuk.
2019. 04. 16. Webfejlesztés keretrendszerek 20
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISKérések leállítása
2019. 04. 16. Webfejlesztés keretrendszerek 21
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS2019. 04. 16. Webfejlesztés keretrendszerek 22
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISHTTP kérések elkapása
4Az Interceptor képességek segítségével lehet a kliensről a szerverre irányuló és onnan érkezőHTTP forgalmat:
■ elemezni
■ átalakítani
4Az egyes elkapó elemeket előre és visszairányú láncokba rendezhetjük.
4Tipikus feladatok:
■ azonosítás
■ naplózás
■ …
2019. 04. 16. Webfejlesztés keretrendszerek 23
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISElőrehaladás kezelése
4Egyes estekben a feltöltés hosszú időt vehet igénybe.
4A felhazsnálónak érdemes visszajelezni, hogy hol tart a tranzakció.
4A nyomonköbetéshez a HttpRequest reportProgress tulajdonságát kell
engedélyezni.
2019. 04. 16. Webfejlesztés keretrendszerek 24
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISSzolgáltatás
2019. 04. 16. Webfejlesztés keretrendszerek 25
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS2019. 04. 16. Webfejlesztés keretrendszerek 26
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISXSFR
4A Cross-Site Request Forgery (XSRF) egy támadás típus ahol a támadó a flehazsnálót
nemkívánt műveletek végrehajtásráa bírhatja rá
2019. 04. 16. Webfejlesztés keretrendszerek 27
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISVédekezés
4 A HTTP kérés küldésekor,
■ egy elkapó kiolvassa a megfelelő címkét a sütiből, alapértelmezésben XSRF-TOKEN,
■ és beállítja mint X-XSRF-TOKEN HTTP fejlécet
4 Mivel a sütihez, csak adott URL-ről lehet hozzáférni ezért a szevrer csak azon kéréseket engedélyezi aho ez a süti megvan
2019. 04. 16. Webfejlesztés keretrendszerek 28
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISService Workers: bevezető
4A service worker egy olyan szkript amelyet a webböngésző a háttérben futtat.
4Elkülönül a wbeoldal életétől lehetővé teszi a háttér folyamatok megvalósítását 4Olyan megoldásoka mint
■ push értesítés
■ háttér szinkronizáció
■ …
2019. 04. 16. Webfejlesztés keretrendszerek 29
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISService Worker
4 Egy JavaScript Worker, nem fér hozzá a DOM-hoz. Az oldalt kezelő szállal a postMessage interfacen keresztül
kommunikálhat.
4 A service worker egy programozható hálóztai proxy funkciót is betölthet.
4 A rendszer a service worker életútját a többi elemtől függetlenül menedszeli, perzisztens adatok tárolására nem alkalmas..
4 Erre pl az IndexedDB API alkalmas.
2019. 04. 16. Webfejlesztés keretrendszerek 30
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISElőfeltételek
4 Böngésző támogatás
■ Támogatott az alábbi böngészőkben
– Chrome, Firefox ,Opera, Edge, Safari
■ Fogja támogatni:
– Microsoft Edge
4 Csak HTTPS-en megy
■ Fejlesztés közben a localhsotnál nem kell, de produkciós környezetben csak HTTPS felett működik
■ A service worker segítségével el lehetne térítni kapcsolatokat, át lehetne alakítani a tartalmat, tökéletes a man-in-the-middle támadásokra.
■ Ezért csak olyan oldalakhoz lehet service wokert regisztrálni amelyek https protokollon érhetőek el, így a telepített service worker az oldaltól származik
2019. 04. 16. Webfejlesztés keretrendszerek 31
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISService worker és az Angular
4A fenti parancs az alábbi műveletekt végzi el
■ Hozzáadja az @angular/service-worker csomagot a projekthez
■ Engedélyezi a service worker build támogatást a CLI-ben
■ Importálja és regisztrálja a service workert az app modulban
■ Kiegészíti az index.html fájlt
– Hozzáad egy hivatkozást a manifest.json fájlra
■ Telepít egy ikont a Progressive Web App (PWA) támogatásra
■ Létrehozza az ngsw-config.json konfigurációs fájlt
2019. 04. 16. Webfejlesztés keretrendszerek 32
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISService worker futtatása
4http-server segítségével indíthatjuk
■ Mivel az ng serve nem működik együtt a service workerrel ezért egy különló http szervert kell használni. (pl.: http-server -p 8080 -c-1 dist/<project-name>)
4Kezdeti betöltés
■ Amikor a szerver fut elérhetjük az
alkalamzást itt: http://localhost:8080/.
2019. 04. 16. Webfejlesztés keretrendszerek 33
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISMit gyorsítótárazunk
4Az alkalmazás megjelenítéséhez szükséges összes fájl gyorsítótárazva van.
4A CLI által létrehozott minta ngsw-
config.json az alábbiakat konfigurálja:
■ index.html.
■ favicon.ico.
■ Build erőforrásokat (JS és CSS csomagok).
■ minden az assets mappában
■ A kpek és fontok az outputPath változóban (alapértlelmezésben ./dist/<project-name>/) vagy resourcesOutputPath.
2019. 04. 16. Webfejlesztés keretrendszerek 34
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISngsw-config.json
4appData
■ Adott alkalmazás verzióhoz tárolt adatok.
4assetGroups
■ Az alkalmazás verzióhoz tartozó erőforrások.
4dataGroups
■ Nem az alkalmazás verzióhoz igazodik.
■ Saját szabályok szerint gyorsítótáraz.
2019. 04. 16. Webfejlesztés keretrendszerek 35
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISdataGroups
2019. 04. 16. Webfejlesztés keretrendszerek 36
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISÖsszefoglaló
4Angular HTTP
■ Szolgáltatás igénybevétele
■ JSON feldolgozása, ellenőrzése
■ Hiba kezelés
■ Hiba részletek
– retry()
■ Observables és operátorok
■ Nem JSON adat kérése
■ POST, DELETE, PUT
■ A kérés konfigurálása - kérés, válasz elkapása
■ Előrehaldás események
■ XSRF
■ Saját süti, fejléc
2019. 04. 16. Webfejlesztés keretrendszerek 37
UNIVERSITY OF SZEGED
D
epartment of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSISA következő előadás témája
4 Angular Biztonság
■ Legjobb gyakorlat
■ Cross-site scripting (XSS)
■ Biztonsági kontextus
■ DOM közvetlen használata és szeparáció
■ Tartalom biztonsági szabályok
■ Offline sablon fordító
■ Szerver oldali XSS védelem
■ Biztonságos értékek
■ HTTP sérülékenységek
■ Auditálás
2019. 04. 16. Webfejlesztés keretrendszerek 38