TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Relevanta dokument
TDP013. Innan AJAX Ett synkront webb. Med AJAX Ett Asynkront webb AJAX. Webbprogrammering och interaktivitet. AJAX, CORS,jQuery, PaaS, Projektet

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS,jQuery, PaaS, Projektet. Anders Fröberg Institutionen för Datavetenskap (IDA)

TDP013. Innan AJAX Ett synkront webb. Med AJAX Ett Asynkront webb

E12 "Evil is going on"

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

E12 "Evil is going on"

"HTML5 och relaterade API:er"

TDP013. Node.js, Mocha, Istanbul. Anders Fröberg Institutionen för Datavetenskap

E11 "Protection" Föreläsning 11, HT2014 Säkerhet, tillgänglighet. Johan Leitet. Kurs: 1dv403 Webbteknik I

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Laboration 1 XML, XPath, XSLT och JSON

Services + REST och OAuth

Avancerade Webbteknologier

Användarhandledning. edwise Webbläsarinställningar

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

Webbprogrammering. Sahand Sadjadee

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

E13 "Behind the Wild"

Användarhandledning. edwise Webbläsarinställningar

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

1ME323 Webbteknik 3 Lek0on 6 API. Rune Körnefors. Medieteknik Rune Körnefors rune.kornefors@lnu.se

Kursplanering Utveckling av webbapplikationer

TDP003 Projekt: Egna datormiljön

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Webbservrar, severskript & webbproduktion

Modul 6 Webbsäkerhet

E09 - Totally Tool Time

Elektronisk publicering TNMK30

Tekniskt meddelande nr 50 från BankID Pluginer riskerar att blockeras i kommande versioner av webbläsare gäller alla operativsystem.

1. Hur öppnar jag Polisens blanketter / formulär, trycksaker och annat som är i PDF-format?

Webbprogrammering TDDD52

Grundläggande datavetenskap, 4p

Exemple på Tentauppgifter Webbprogrammering

Moderna Jfokus, Stockholm Monday, February 4, 13

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Användarhandledning. edwise Webbläsarinställningar

Visma Proceedo. Att logga in - Manual. Version 1.3 /

En integration av betalningssystem på hemsida

Labora&on 8 Formulär övningar/uppgi6er

Server-kod. TDDD80 Mobila och sociala applikationer

Instruktion för användande av Citrix MetaFrame

Säkerhet i applikationslagret och slaget om webben. John Wilander, Omegapoint, Rätt säkerhet, maj 2010

Anvisningar för inkoppling till Mikrodataåtkomst vid SCB

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Visma Proceedo. Att logga in - Manual. Version 1.4. Version 1.4 /

Föreläsning 4 Serverskript PHP Validering av data med serverskript Formulär

PHP. Dynamiska webbsidor

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

WebSocket eller Ajax i Webbapplikationer

Viktiga inställningar för Isolda webshop

E07 "Greased Lightning"

Lägga till bild i e- handeln

Webbprogrammering - 725G54 PHP. Foreläsning II

Android fortsättning. TDDD80 Mobila och sociala applikationer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Modern webbutveckling. av Robert Welin-Berger

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

MinEkonomi. Bruksanvisning

12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE

Webbsidor och webbservrar

En Single-Page Application för små barn, barnens föräldrar samt en och annan mormor

Visma Proceedo Att logga in - Manual

LISAM. Linköpings Universitet. Logga in. Du loggar in på Använd ditt LiU-id, användarnamn och lösenord.

Release notes. Axiell Arena version 4.0

Snabbguide webbhotellstjänster v 1.0

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

Systemkrav myschenker.se

Cookies tillåtna Popup fönster tillåtna För IE 9 11, behöver blandat innehåll tillåtas OBS!

Visma Proceedo. Att logga in - Manual. Version Version /

Karlstads Universitet, Datavetenskap 1

Tentamen Nätverksprogrammering Lösningsförslag

E-legitimationsnämndens legitimeringstjänster för test

Ibruktagande av Statistikcentralens gränssnittstjänster i QGISprogrammet

Statistik från webbplatser

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Axiell Arena Visa BOOK-IT:s resurser

Startguide för Administratör Kom igång med Microsoft Office 365

MVC med Javascript och Ajax. Filip Ekberg

E-MÖTESVERKTYG SKAPA ETT RUM I ADOBE CONNECT FÖR LÄRARE

JavaScript. DOM Scripting

Rensa cache-minnet hos din webbläsare

Google Analy+cs. Umeå universitet

On-line produktion TDDC61

MVC med Javascript och Ajax. Filip Ekberg

Laborationshandledning Laboration 02

INNEHÅLL 30 juni 2015

Utveckling av webbapplikationer med.net, DVA213 (1 av 5)

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Om du kommer att arbeta på en produktionsanläggning som har en egen säkerhetsintroduktion som nätkurs måste du också avlägga den.

Hja lp till Mina sidor

ADOBE FLASH PLAYER 10.3 Lokal inställningshanterare

Instruktion för användande av Citrix MetaFrame

TDP025. Entreprenöriell programmering. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Biometria Violweb. Kom-igång-guide. Mars Sammanfattning Den här anvisningen är till för dig som ska börja använda dig av Biometrias tjänster.

Transkript:

TDP013 Webbprogrammering och interaktivitet AJAX, CORS & jquery Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Innan AJAX Ett synkront webb 1. Användaren klickar länk, formulär, bild etc 2. Anrop till servern sker Server 3. Servern agerar på förfrågan 4. Servern returnerar svar 5. Webbläsaren laddar om hela sidan Användaren måste vänta på svar, kan inte göra något annat.

Med AJAX Ett Asynkront webb 1. Användaren klickar länk, formulär, bild etc 2. Anrop till servern sker Server Klicka, dra, byt bild, skriv vidare, etc. användaren kan fortsätta använda webbplatsen 4. Servern returnerar svar 3. Servern agerar på förfrågan 5. Webbläsaren laddar om delar av sidan Användaren kan göra annat i väntan på svar från servern. Endast de påverkade delarna av sidan ändras.

AJAX Hela processen styrs av JavaScript Görs lite olika beroende på vilken webbläsare som används Oftast så använder man ett färdigt bibliotek (t ex jquery) för att använda AJAX så man slipper bry sig om detaljerna för olika webbläsare Det som kommer tillbaka från servern (istället för en helt ny sida) kan variera, men oftast JSON eller XML (i denna kursen använder vi bara JSON)

AJAX Skapa XMLHttpRequest var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP );

AJAX Skicka request var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); xmlhttprequest.open( GET, http://www.example.com/service, true); xmlhttprequest.send(); true gör anropet asynkront

AJAX Skicka request med GET data var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); xmlhttprequest.open( GET, http://www.example.com/service?a=b, true); xmlhttprequest.send();

AJAX Skicka request med POST data var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); xmlhttprequest.open( POST, http://www.example.com/service, true); xmlhttp.setrequestheaders( Content-Type, application/x-wwwform-urlencoded ); xmlhttprequest.send( a=b );

AJAX Response var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); xmlhttprequest.onreadystatechange = function() { if(xmlhttprequest.readystate == 4 && xmlhttprequest == 200) { document.getelementbyid( content ).innerhtml = xmlhttprequest.responsetext; xmlhttprequest.open( GET, http://www.example.com/service?a=b, true); xmlhttprequest.send();

AJAX - jquery var callback = function(data) { $( #content ).text = data; $.ajax({ url: http://localhost:8888/, type : POST, data : { name : Marcus, filter : Employee );, success : callback Titta i dokumentationen för fler alternativ när man använder jquery s AJAX bibliotek

Cross-Domain Scripting & CORS En restriktion som finns på AJAX är att anropen måste göras till exakt samma domän som klienten kör på. Finns er sida på http://example.com så får man endast anropa tjänster på http://example.com/ Anledningen till denna restriktion är av säkerhetskäl, och den intresserade kan läsa om cross-domain scripting För att komma runt detta har man börjat använda CORS (Cross-Origin Resource Sharing) där servern kan ge rättigheter åt olika domäner. (OBS fungerar inte i alla webbläsare) Vi kommer inte fördjupa oss i alla detaljer kring detta, utan endast bry oss om hur vi implementerar det

CORS OPTIONS Innan GET/POST anropet skickas ett OPTIONS anrop till servern Om rätt headers returneras så tillåter webbläsaren att man genomför GET/POST Ett relativt snyggt sätt att göra det på, som minimerar allt för mycket kodförändingar i existerande system

CORS Response headers var headers = {; headers[ Access-Control-Allow-Origin ] = * ; headers[ Access-Control-Allow-Methods ] = POST, GET, OPTIONS ; res.writehead(200, headers); res.end(); I Node.js så lägger man till detta på alla utgående response som man vill göra tillgänliga. OBS: Vi väljer att sätta * vilket tillåter alla klienter att anropa, det kanske man inte vill göra i en produktionsmiljö.

CORS Response headers Kan vara smart att göra något för att snabba upp processen: if(req.method == OPTIONS ) { var headers = {; headers[ Access-Control-Allow-Origin ] = * ; headers[ Access-Control-Allow-Methods ] = POST, GET, OPTIONS ; res.writehead(200, headers); res.end(); else { //Om det är POST, GET etc så gör något annat lite mer avancerat som tar tid, //men headers måste ändå sättas!

Utan CORS Ett alternativ är att använda en proxy som hanterar alla anrop till domänen (detta gör vi inte i denna kurs), att använda en proxy kan ha andra fördelar så som caching och att det fungerar med alla webbläsare. Anropen sker till samma domännamn så det tillåts av alla webbläsare. Men proxyn omfördelar till olika servrar. Anropar www.example.com/index.html Anropar www.example.com/service DNS www.example.com Proxy Apacheserver Django server

AJAX & CORS - Demonstration

www.liu.se