Khóa luận Cross-domain Ajax cho các ứng dụng web mashup

ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Nguyn ThHương  
CROSS-DOMAIN AJAX CHO CÁC NG DNG  
WEB MASHUP  
KHOÁ LUN TT NGHIP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Nguyn ThHương  
CROSS-DOMAIN AJAX CHO CÁC NG DNG  
WEB MASHUP  
KHOÁ LUN TT NGHIP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
Cán bhướng dn: TS. Nguyn Hi Châu  
HÀ NI - 2009  
LI CM ƠN  
Trong thi gian nghiên cu và làm khóa lun, tôi xin chân thành cm ơn đặc  
bit đến thy giáo hướng dn Nguyn Hi Châu, người đã giúp tôi la chn đề tài,  
hướng dn tìm tài liu và đưa ra nhng nhn xét quan trng giúp tôi hoàn thành tt đề  
tài khóa lun tt nghip. Bên cnh đó, tôi xin chân thành cm ơn các thy cô giáo  
trong khoa Công NghThông Tin – trường Đại hc Công Ngh- ĐHQGHN đã ging  
dy và trang bcho tôi nhng kiến thc cơ bn trong hc tp nghiên cu khoá lun  
cũng như trong công vic sau này.  
Nhng li động viên, khích ltgia đình, schia s, hc hi tbn bè cũng là  
đã góp phn rt nhiu cho khóa lun tt nghip ca tôi đạt kết qutt hơn.  
Do trình độ hn chế nên trong quá trình làm khóa lun khó tránh khi nhng  
thiếu sót, tôi rt mong schbo thêm ca thy cô giúp tôi hoàn thành và đạt kết quả  
tt hơn.  
Tôi xin chân thành cm ơn !  
Hà Ni, ngày 24 tháng 5 năm 2009  
Nguyn ThHương  
TÓM TT KHÓA LUN TT NGHIP  
Ngày nay, mashup ngày càng trnên thnh hành theo trào lưu Web 2.0. Mashup  
cho phép mi người thhin khnăng sáng to bt tn bng cách ‘ni’ hai hay nhiu  
ng dng web li vi nhau. Và nếu có chính sách kim soát thích hp, mashup có thể  
to nên mt lp ng dng mi hiu quvà hu ích trong rt nhiu môi trường. Để  
mashup dliu tnhiu ngun khác nhau đó, chúng ta phi thc hin cross-domain  
Ajax. Nhưng để cross-domain được, không phi là vic dvì yêu cu bo mt dliu  
và yêu cu trang web đạt được nhng tính năng đầy đủ phi được hài hòa.  
Hin có mt sphương pháp cho vic cross-domain. Và khóa lun ‘Cross-  
domain Ajax cho các ng dng mashup’ trình bày nhng nghiên cu tng thvề  
mashup và cross-domain ajax, nhng cách thc để thc hin cross-domain trong ajax.  
Tiếp đó là vic nghiên cu vhot động và lp trình Google Maps API để có cơ sở  
xây dng mt ng dng thnghim vi cross-domain cho mashup.  
MC LC  
DANH MC CÁC SƠ ĐỒ  
THUT NGVÀ CÁC CHVIT TT  
LI MỞ ĐẦU  
CHƯƠNG I. CROSS-DOMAIN AJAX VÀ NG DNG ĐỂ XÂY DNG WEB  
MASHUP........................................................................................................................1  
1.1. Gii thiu chung vCross-Domain Ajax ..........................................................2  
1.1.1 AJAX ...............................................................................................................2  
1.1.2. XMLHttpRequest ...........................................................................................2  
1.1.1. Chính sách Same-Origin.................................................................................3  
1.1.3. Th<script>....................................................................................................4  
1.1.4. Gadget Aggregator..........................................................................................4  
1.2. Gii thiu vMashup..........................................................................................4  
1.3. Mt số ứng dng để xây dng Web Mahup .....................................................7  
1.3.1. Sdng Google Maps API.............................................................................8  
1.3.2. Sdng Amazon Web Services và Google Search APIs...............................9  
1.3.3. Sdng Flickr API.......................................................................................11  
1.3.4. Sdng ebay API.........................................................................................12  
CHƯƠNG II. CROSS-DOMAIN AJAX VÀ ............................................................14  
CÁC GII PHÁP THC HIN TRONG AJAX.....................................................14  
2.1. Cross domain proxy.........................................................................................14  
2.2. Cross domain JSON.........................................................................................15  
2.2.1. JSONRequest.post ........................................................................................16  
2.2.2 JSONRequest.get..........................................................................................17  
2.2.3. JSONRequest.cancel.....................................................................................17  
2.2.4. Bo mt.........................................................................................................17  
2.2.5. Hot động ca JSON ....................................................................................18  
2.3. Cross domain sdng Flash...........................................................................19  
2.4. Subspace............................................................................................................20  
2.4.1. Subdomain ...................................................................................................22  
2.4.2. Đơn Web Service.........................................................................................22  
2.4.3. Đa Web Service ...........................................................................................23  
2.5. Gii pháp trong thế htiếp theo .....................................................................24  
2.5.1. FlashXMLHttpRequest................................................................................24  
2.5.2. ContextAgnosticXMLHttpRequest .............................................................24  
CHƯƠNG III. XÂY DNG NG DNG THNGHIM CROSS-DOMAIN  
AJAX.............................................................................................................................26  
3.1. Gii thiu vGoogle Maps ..............................................................................26  
3.2. Gii thiu vGoogle Maps API ......................................................................26  
3.2.1. Maps API Basics..........................................................................................27  
3.2.2. Maps API Events .........................................................................................29  
3.2.3. Maps API Controls ......................................................................................30  
3.2.4. Map Overlays...............................................................................................31  
3.2.5. Google Maps API Services..........................................................................33  
KT LUN ..................................................................................................................34  
TÀI LIU THAM KHO  
DANH MC CÁC SƠ ĐỒ  
Hình 1. XmlHttpRequest vi Ajax ..........................................................................3  
Hình 2. Mashup ni dung tnhiu ngun...............................................................5  
Hình 3. Dliu tương tác hin thvi Ajax............................................................5  
Hình 4. Khác nhau gia ba website – Amazon, Google, eBay ...............................6  
Hình 5. Mashup làm vic..........................................................................................6  
Hình 6. To mt mashup ........................................................................................7  
Hình 7. ng dng cho mashup................................................................................7  
Hình 8. Đăng nhp Google Maps API key..............................................................8  
Hình 9. Đăng nhp cho tài khon Amazon Associates............................................9  
Hình 10. Đăng nhp cho tài khon AWS ..............................................................10  
Hình 11. Google Search API .................................................................................10  
Hình 12. Đăng nhp cho tài khon Flickr API ......................................................11  
Hình 13. Flickr photos search................................................................................12  
Hình 14. Đăng nhp cho tài khon Flickr API ......................................................12  
Hình 15. Cross-domain Proxy ................................................................................14  
Hình 16. Hn chế ca cross domain XMLHttpRequest .........................................15  
Hình 17. Ca cross domain JSON.........................................................................16  
Hình 18. Hot động ca JSON ..............................................................................18  
Hình 19. Li 2044..................................................................................................19  
Hình 20. Gi ra dliu tdomain đơn unstrusted 3rd-party. .................................22  
Hình 21. Kết ni đa web service............................................................................23  
Hình 22. Mashup và các ng dng........................................................................26  
Hình 23. Google Maps API ...................................................................................27  
Hình 24. map_api_basic.html................................................................................27  
Hình 25. map_api_event.html.................................................................................29  
Hình 26. map_api_overlay.html ............................................................................32  
Hình 27. map_api_polyline.html...........................................................................33  
Hình 28. map_api_geocoding.html .......................................................................33  
THUT NGVÀ CÁC CHVIT TT  
AJAX  
API  
Asynchronous JavaScript and XML  
Application Programming Interface  
Cascading Style Sheets  
CSS  
DOM  
JSON  
HTML  
REST  
RSS  
Document Object Model  
JavaScript Object Noattion  
Hypertext Markup Languages  
Representational state transfer  
Really Simply Syndication  
Simple Object Access Protocol  
SOAP  
XHTML Extensible HyperText Markup Language  
XML  
XSLT  
URL  
Extensible Markup Language  
Extensible Stylesheet Language Transformations  
Uniform Resource Locator  
LI MỞ ĐẦU  
Vài năm trli đây, ngày càng nhiu công ty phát hành nhng chương trình cho  
phép kết hp dliu và dch vtrên web ca các doanh nghip vi nhau, đồng thi  
cũng phát trin hài hòa gia bo mt và các yêu cu ca khách hàng. Chúng được trn  
ln (mashup) mt cách thông minh và sáng to. Nhưng có mt vn đề vbo mt được  
đưa ra khi bn chuyn dliu gia các domain. Vi các hn chế cross-domain, được  
xây dng trên hu hết các trình duyt, là mt skhó khăn cho mashup. Vic tìm hiu  
sdng web proxy hoc JSON, ... để nâng cao các hiu qumashup.  
Đề tài ‘Cross-domain ajax cho các ng dng web mashup’ nhm mc đích tìm  
hiu vcách thc và phương pháp thc hin các li gi cross domain trong ajax. Và  
trang bkiến thc vthư vin ajax cross domain, Google Maps API để lp trình ng  
dng thnghim cho mashup.  
Khóa lun được chia làm 3 chương:  
Chương I là phn gii thiu cross-domain ajax cùng mt svn đề liên quan, và  
các ng dng để xây dng web mashup.  
Chương II sgii thiu chi tiết vcross-domain và cross-domain ajax, sau đó  
slà phn tóm tt nhng gii pháp đang được thc hin đối vi cross-domain trong  
ajax.  
Chương III là chương dành cho vic nghiên cu vhot động và lp trình  
Google Maps (API), đó là mt cơ scho vic xây dng mt ng dng thnghim  
cross-domain cho mashup. Và cui cùng, là phn tng kết bài khóa lun và phn tài  
liu tham kho.  
1
CHƯƠNG I. CROSS-DOMAIN AJAX VÀ NG DNG ĐỂ XÂY  
DNG WEB MASHUP  
1.1. Gii thiu chung vCross-Domain Ajax  
Hãy ly mt ví d: srt tuyt nếu bn có thly dliu ttrang từ đin ca  
mình để dùng mi trang web khác. Điu đó đòi hi các trang đó cn mashup dliu  
ca bn, và khi đó phi thc hin cross-domain ajax. Vi rt nhiu ng dng hin nay  
sdng công nghajax, nó to khnăng để gi các dch vweb ttrong javascript  
ca bn.  
Để thc hin cross-domain, có mt vài phương pháp phbiến thông qua  
JavaScript: Proxy, JSON, Flash.  
1.1.1. AJAX  
Hu như chúng ta đều đã biết ti hay thm chí đang sdng nhiu Gmail,  
Google Map, .... hay các tin ích tin dng ca Flickr. Thì hn chúng ta nên biết rng  
nhng tính năng và cách thc tương tác vi người dùng nhanh chóng, tin li như vy  
mà các trang web này cung cp chính là do AJAX.  
AJAX không phi là mt ngôn ngmi, nó là skết hp ca mt lot các công  
nghkhác nhau:  
- XHTML + CSS vi vai trò hin ththông tin.  
- Mô hình tương tác và hin thị động DOM.  
- Trao đổi và truy cp/tác động lên thông tin sdng XML và XSLT.  
- Nhn thông tin không đồng bvi đối tượng XMLHttpRequest.  
- JavaScript vi vai trò kết hp 4 công nghtrên li vi nhau.  
Vi AJAX, mt file JavaScript có thliên kết trc tiếp vi server mà không cn  
ti li trang web. Công nghAJAX đã to cho ng dng Internet nhgn hơn, nhanh  
hơn và tương tác người dùng tt hơn.  
1.1.2. XMLHttpRequest  
Đối tượng XMLHttpRequest là trung tâm ca nhiu ng dng Ajax. Nó cũng là  
đối tượng xác định mt API cung cp chc năng cho script phía client schuyn đổi  
dliu gia client và server. Mc dù không là mt tính năng cn thiết, nó đã là mt  
dch vOutlook web-mail cho phép mi người có thdownload email, xem lch, ...  
XmlHttpRequest chính là bí quyết ca Ajax:  
2
Hình 1. XmlHttpRequest vi Ajax  
ng dng Ajax sdng mu đối tượng XMLHttpRequest có thchto request  
ti cùng domain chúng định v. Điu đó bi vì chính sách bo mt cross-domain ca  
JavaScript sandbox và nó có thtránh khi tn thương cross-site.  
Đối tượng XMLHttpRequest không cho phép gi các mã tmt domain trong  
mt web server khác. Hin ti, mashup bao gm vic gi web service tAPI được to  
sn bi các công ty như Google, Flickr, Yahoo, ... Nó có nghĩa rng mt li gi luôn  
luôn phi to cross-domain, nếu không bn không ththc hin chúng.  
1.1.2. Chính sách Same-Origin  
Trình duyt sdng cookie như mt phương pháp để xác thc người sdng  
duy nht, và để thc hin giao din phù hp vi người sdng đó. Để cookie có thể  
được sdng vi mc đích như vy, trình duyt phi gicho cookie bí mt vi các  
site khác. Do đó, cookie chỉ được gi trong cùng mt site đã thiết lp chúng, và chính  
sách như vy được biết đến gi là ‘Chính sách Same-Origin’. Nó cũng có nghĩa rng –  
“chsite cha mt vài thông tin trong trình duyt mi có thể đọc hoc chnh sa thông  
tin đó”. Điu này có nghĩa là phn ln không thti script tmt domain sang domain  
khác. Ví dnhng hành động sau bcm:  
- Sdng mt XMLHttpRequest() đến mt domain khác (thành phn ct lõi  
ca Ajax).  
- Truy cp hoc sa đổi DOM ca mt <frame> hoc mt <iframe> có mt  
thuc tính src vi domain khác.  
- Truy cp hoc sa đổi window (hoc tab) ti location khác.  
3
Hn chế ca same-origin policy đối vi JavaScript: sự điu chnh truy cp đối  
vi inline frame (IFRAME) và đối tượng XMLHttpRequest.  
- IFRAME: có thsdng để download văn bn HTML phong phú bên ngoài  
ngun, nhưng nếu ni dung sang domain khác, trình duyt skhông cho phép  
JavaScript trong trang cha đọc hoc sa đổi văn bn bên trong frame và  
ngược li.  
- XMLHttpRequest: có thsdng để download văn bn XML bt k, nhưng  
nó không thti file tdomain khác.  
Như vy trng thái ca cross-domain script không là ưu đim cho phát trin  
web. Mc dù chính sách same-origin ngăn chn nhng li có thxy ra, nhưng nó  
cũng li là hn chế để nâng cp (thm chí là gim) cho các thế htiếp theo ca ng  
dng web để phát trin.  
1.1.3. Th<script>  
Same-origin không áp dng cho các thscript (mc dù nó áp dng trên các file  
JavaScript), script có thể được ti tcác domain khác và thc hin vi đặc quyn ca  
trang cha chúng.  
Nhng script txa này có thể được thêm vào trang mt cách tự động để theo  
dõi nhng ai truy cp vào trang web ca bn, và bn phi chy chúng để có hiu lc.  
Do đó, nó đảm bo chcác file JavaScript hp lmi có thtruy cp qua domain, và  
tt ccác file khác sgây li.  
1.1.4. Gadget Aggregator  
Gadget aggregator như Microsoft Windows Live, Google Personalized  
Homepage, thc hin gp các ni dung tương tác người dùng chn tcác ngun khác  
nhau thành mt trang đơn chính; và các Gadget bao gm cHTML và JavaScript, nó  
được thiết kế để có thchèn vo trong mt trang gadget aggregator. Các công cnày  
nm trong mt trang để cung cp thông tin cn thiết ti người sdng, và nó phía  
client-side ca mt vài web service.  
1.2. Gii thiu vMashup  
Trình duyt web hin nay đã được thiết kế để ddàng hơn và an toàn hơn trong  
ly dliu tnhiu ngun vào trong mt trang. Mashup là website hoc ng dng web  
mà phi hp tnhiu hơn mt ngun vào trong mt trang hp nht. Cũng như bn  
hiu mashup trong âm nhc là mt bn audio hay video được biên son tnhng bn  
ghi khác, thường là tcác phong cách nhc khác nhau.  
Ví d: Digg.com  
4
Đối vi phát trin web, mashup là mt ng dng web phi hp dliu tmt  
hoc nhiu ngun vào mt bcông c. Server to các request ti mi ngun ni dung,  
chuyn giao thông tin nó nhn được, và phi hp kết qutrong mt trang để gi ti  
trình duyt.  
Hình 2. Mashup ni dung tnhiu ngun.  
Mt ng dng Ajax + XML cho phép mt trang web ly dliu tserver và tự  
cp nht sdng mã JavaScript như ở hình 1.2 dưới đây.  
Hình 3. Dliu tương tác hin thvi Ajax  
Vi phương pháp này, người dùng có thtương tác vi nhiu giao din người  
dùng mà không cn ti li toàn btrang. Server gi mt trang ban đầu ti trình duyt,  
nó gi ngược li ti server cho ni dung cn cp nht.  
Trong vài năm trli đây, vic mcác API tmt sngun như Google,  
Yahoo, Last.fm, Flickr, YouTube và Amazon đã cho phép các nhà phát trin web thc  
hin trong các ng dng ca h, vi mt li gi ti các API cn thiết, các tính năng  
như thêm nh, bn đồ, videos, ... và danh sách nhc.  
Để hiu hơn vmashup, chúng ta hãy giscó 3 người trc tuyến ti: Google,  
Amazon và eBay. Mashup ca bn scho phép mi người tìm kiếm dliu ca  
5
Amazon (ví d: giá nhng cun sách), so sánh chúng vi trên trang eBay, và cui  
cùng, xác định người bán. Như vy, bn đã ti và xem xét 3 website khác nhau.  
Hình 4. Khác nhau gia ba website – Amazon, Google, eBay  
Cách chúng làm vic  
Hình 5. Mashup làm vic  
Mashup là mt thloi thú vca ng dng web. Skết hp ca các mô hình  
dliu, dch v, ... là scung cp cui cùng cho sơ shtng cn thiết để bt đầu phát  
trin ng dng có ththúc đẩy và hp nht slượng ln thông tin có sn trên web.  
To mt mashup, quá trình ca chúng ta sgm các giai đon :  
6
Hình 6. To mt mashup  
Tiếp theo chúng ta stham kho mt số ứng dng để xây dng Web Mashup.  
1.3. Mt số ứng dng để xây dng Web Mahup  
Thường các ng dng web dùng mashup kết hp bn đồ vi nhiu loi dliu  
tnhiu trên web.  
Hình 7. ng dng cho mashup  
Có mt nhn xét rng chúng đều sdng API. Và hu hết các nhà cung cp  
dch vAPI yêu cu bn phi có mt developer/application ID, mt tài khon người  
dùng hoc dch dch vca h, hoc chai. Mt vài dch vcung cp cho bn mt ID  
cho mt số ứng dng khi bn viết chương trình trong khi nhng cái khác yêu cu bn  
tto mt ID cho mình vi mi ng dng bn to ra.  
7
Trong khi quá trình đăng ký này nghe có vphc tp, nhưng tht snó chtn  
mt vài phút để hoàn thành.  
Bn hãy tham kho xem mt vài ng dng sau.  
1.3.1. Sdng Google Maps API  
Google Maps API là mt ng dng sdng bn đồ trc tuyến và là mt trong  
nhng công nghmashup đặc trưng. Mt sAPIs bn đồ khác là Yahoo!Maps Web  
services (http://developer.yahoo.com/maps/ ). Vi Google Maps API, chúng snhn  
mt vtrí và vlên bn đồ. Mt đim đánh du có thể được sdng để xác định vtrí,  
và bn có ththêm các đon văn bn ti đim đánh du đó.  
Vi Google Maps API, bn có thtìm các địa đim (như khách sn, trm đổ  
xăng, ...). Và ngày nay, cuc cách mng ngành bn đồ din ra mnh vi khnăng hin  
thị ảnh chp vtinh chi tiết đến tng ngôi nhà.  
Để đăng nhp cho mt Google Maps API key, đầu tiên bn hãy truy cp vào  
website http://code.google.com/apis/maps/ và ti đường link ‘Sign up for a Google  
Maps API key’.  
Hình 8. Đăng nhp Google Maps API key.  
Nếu bn sdng Google Maps API trong mt vài mashups được định vti các  
server khác nhau, bn có thcn đến nhng key khác nhau. Đó cũng chính là key cho  
phép bn sdng API. Key này slà duy nht cho bn, cho ng dng ca bn hoc  
thm chí cho URL tmashup ca bn được đưa ra dù nó hu hết các key đều min phí.  
Dliu được sdng trong Google Maps thường được chuyn đổi đến địa chỉ  
ca đim tung độ/hoành độ hoc ti thành ph, ...  
8
1.3.2. Sdng Amazon Web Services và Google Search APIs  
Bn có thsdng API để tìm kiếm trong cơ sdliu ca Amazon và thc  
hin mt thmua sm trong hai cách khác nhau. Vi Amazon, trng tâm là trên dữ  
liu bn truy cp không cn trc tiếp các li gi SQL.  
Vi Amazon, bn cn truy cp ti Web Services API ca API – nơi mà dliu  
Amazon được lưu tr. Bn cũng có thcn thc hin thmua sm và khnăng tìm  
kiếm (và đạt li nhun) bán hàng thông qua trang web ca bn. Dù đơn gin, nhưng nó  
yêu cu bn to 3 tài khon riêng bit: mt tài khon Amazon, mt tài khon Amazon  
Associate và mt tài khon Amazon Web Services (AWS).  
Để có mt tài khon Amazon, bn tht skhông phi làm gì c, vì nó đơn gin  
chgm địa che-mail và mt khu, cùng vi nhng thông tin khác bn cung cp.  
Để đăng kí cho mt tài khon Amazon Associate, ta tìm đến đường link  
Associates Program’.  
Hình 9. Đăng nhp cho tài khon Amazon Associates  
Để đăng kí cho mt tài khon AWS, truy cp vào website  
http://www.amazon.com/ và tìm đến link Amazon Web Services’.  
9
Hình 10. Đăng nhp cho tài khon AWS  
Vi vic sdng Google Search API, nó cho phép bn đặt chế độ tìm kiếm trên  
trang web ca bn và trong mashup ging như trong Goolg Map API vy. Và stht  
rng, hin nay rt nhiu các công ty như Google, Yahoo!, ... cung cp mt lot các API  
cho vic tìm kiếm, lp bn đồ, ... và các mc đich khác.  
Hình 11. Google Search API  
Bn có thcho phép người dùng tìm kiếm video, tin tc, sách, ... Như vy là  
bn cn giao din ca Amazon và giao din ca Google Search.  
10  
1.3.3. Sdng Flickr API  
Flickr API là mt sbsung ti APIs. Flickr là mt dch vchia sẻ ảnh (photo-  
sharing). Nó cho phép bn ti nh ca bn lên và xem nhng nh đã được ti lên khác.  
Thông tin vmi bc nh có thể được sdng để bsung và tìm kiếm. Quan trng  
nht, nh có thcó các tag – các tmà người chbc nh cm thy có thsdng để  
nhn dng bc nh. Bn có thtìm kiếm Flickr cho phù hp vi nhng tag xác định.  
Bước đầu tiên bn cũng truy cp để được mt API key. Sau đó, bn có thể  
khai thác APIs thsdng API Explorer – cung cp danh sách tt ccác biến và cho  
phép bn nhp dliu ti các biến đó.  
Hình 12. Đăng nhp cho tài khon Flickr API  
Ln đầu tiên sdng Flickr, bn cũng cn phi có được mt Yahoo! ID để đạt  
được quyn truy cp. Trong Mashup phn mm và thành phn ca Web 2.0 được cu  
trúc li, liên kết li và đạt được mt sthay đổi mu mã, thì Flickr bây gilà mt  
thành phn ca Yahoo!  
Nhng thông tin phía trái ca trang web rt hu ích, nhưng nó là tham chiếu  
ca API phía bên phi – rt quan trng. API routines được nhóm li theo các loi. Như  
vy, để xây dng mt mashup, bn cn di chuyn xung ti các phn hình nh và nhn  
ti flickr.photos.search để cho phép bn tìm kiếm danh sách nh.  
11  
Hình 13. Flickr photos search  
1.3.4. Sdng ebay API  
eBay API là mt ng dng phc tp nht. Nó đã được mở để third-party phát  
trin trong mt thi gian dài và quy trình (đấu giá) cũng là phc tp hơn quy trình mua  
và bán thông thường cho mt mc giá cố định.  
Ti eBay API, bn stìm kiếm mt mc nào đó sdng cgiao din SOAP và  
giao din REST. Và kết qusẽ được hin thtrên mt bn đồ Google da vào vtrí ca  
người bán.  
Để bt đầu truy cp ti eBay APIs, bn đi ti eBay Developer Center ti  
http://developer.ebay.com/ , bn đăng kí như mt chuyên viên phát trin qua trang  
web, và sau đó đăng nhp.  
Hình 14. Đăng nhp cho tài khon Flickr API  
12  
Mashup trong eBay cho phép bn tìm kiếm các mc sdng các tkhóa. Khi  
tìm thy thy kết qu, nó trvmt văn bn XML. Văn bn này cha các tiêu đề mi  
mc và giá ca chúng cũng như vtrí người bán. Các mc này sau đó được ánh xvào  
mt bn đồ ca Google vi sự đánh du được cung cp thông tin về đường liên kết ti  
trang eBay.  
Dliu ly teBay và cũng sdng bn đồ Google API.  
13  
CHƯƠNG II. CROSS-DOMAIN AJAX VÀ  
CÁC GII PHÁP THC HIN TRONG AJAX  
Trong khi mashup bt trình duyt trong hthng đa người dùng cùng vi tên  
min không tin cy ln nhau như gia nhng người sdng, thì các trình duyt ngày  
nay đã đưa ra cho các nhà phát trin web không đủ lý thuyết để tích hp ni dung từ  
nhiu domain: hoc là cô lp các website không có sliên lc hoc là liên lc không  
có skim soát vi skhông cô lp.  
Và khi Ajax xut hin trong thế gii ng dng web, nhng nhà phát trin đã  
mun gii quyết mt vn đề trên khi mà cFirefox và IE(Internet Explorer) đều không  
cho phép, đó chính là vic gi mt request đến mt domain khác vi domain hin  
hành. Vn đề đó chính là vn đề Cross-domain Ajax.  
Và, cho đến hin nay, có mt vài phương pháp phbiến để thc hin gi cross  
domain trong Ajax thông qua JavaScript: Proxy, JSON, Flash.  
2.1. Cross domain proxy  
Đây là phương pháp phbiến nht, thay vì to li gi Ajax ti mt domain  
khác, bn to li gi ti proxy ca bn, proxy schuyn cuc gi ti domain bên ngoài  
(ví d: Yahoo! Web Services) và li chuyn dliu trli cho ng dng client. Bi vì  
skết ni được to ti server ca bn, và dliu cũng được trli tserver ca bn,  
do đó không có slo ngi vbo mt.  
Hình 15. Cross-domain Proxy  
To dliu xut hin trong client để dliu ‘same-origin’, do đó trình duyt  
cho phép dliu có thể đọc trli mt IFRAME, hoc thông thường hơn, mt  
XMLHttpRequest.  
14  
Ưu đim: bn có nhiu skim soát toàn bquá trình, bn có thphân tích dữ  
liu ca server txa. Nếu có xy ra li, bn có thxlý nó. Và cui cùng bn có thể  
ghi li tt ccác cuc gi txa, theo dõi cuc gi thành công, hay li.  
Hn chế : tăng độ trca kết ni qua proxy server ca mashup. Chi phí băng thông  
cho mashup author cũng tăng, đặc bit nếu kích thước ca mã mashup là nhso vi số  
lượng ca dliu cross-domain được y quyn (do thc hin tphía server-side).  
2.2. Cross domain JSON  
XMLHttpRequest có mt phương thc bo mt không đủ để htrcho thế hệ  
tiếp theo ca ng dng web. JSONRequest được đề xut như mt browser service cho  
phép dliu trao đổi hai chiu vi dliu JSON server. Nó trao đổi dliu gia các  
script trên các site vi JSON server trong trang web. Nó được hi vng rng trình duyt  
sẽ được xây dng nhng tính năng trong sn phm ca họ để làm cho nhng ưu đim  
trong ng dng web phát trin.  
Trong thế htiếp theo ca ng dng web scó nhiu dliu hơn. Chúng ta  
mun đi ti mt server, hay bt kì server nào đó và trao đổi dliu, thì  
XMLHttpRequest đã không đạt được. Đó là mt hn chế trong mô hình bo mt.  
XMLHttpRequest bràng buc bi chính sách Same Origin. Ràng buc trung  
gian này chcho kết ni ti server mà đã cung cp trang cơ s.  
Hình 16. Hn chế ca cross domain XMLHttpRequest  
Chính sách Same Origin làm vô hiu hóa nhng cuc tn công tbên ngoài,  
nhưng nó cũng chng li mng ln hơn vic sdng hp pháp. Nó nên có khnăng  
15  
cho mt script trong trang truy cp đến các server khác không làm hi đến bo mt ca  
người sdng hoc tchc đó.  
JSON là mt dng trao đổi dliu da trên tp JavaScript an toàn. JSON có thể  
đại din cho cu trúc dliu đơn gin hoc phc tp. JSON không đại din cho hàm  
hoc biu thc. Nó là mt dliu rt cht ch, nó có quy tc cú pháp riêng, do vy bn  
có thddàng nhn biết đó có phi là tài liu JSON không.  
Hình 17. Ca cross domain JSON  
JSONRequest là mt đối tượng JavaScript toàn cc, nó cung cp ba method:  
post, get, cancel.  
2.2.1. JSONRequest.post  
JSONRequest.post là mt HTTP post ca chui đối tượng hoc mng  
JavaScript, nhn nhng phn hi, và phân tích chúng thành giá trJavaScript. Nếu  
phân tích thành công, nó strli giá trca script request. Khi to request, không có  
chng thc hay cookie được gi (nếu gi kèm cookie, request sbli).  
JSONRequest service chcó thsdng để gi và nhn giá trJSON-encoded.  
JSONRequest cha bn tham s:  
- url (string) : URL để POST ti.  
- send (object) : đối tượng JavaScript hoc mng để gi như dliu POST.  
- done (function(requestNumber, value, exception)) : Hàm được gi khi  
request được hoàn thành. Nếu request thành công, hàm snhn srequest  
16  
requestNumber’ và giá trvalue’ trv. Nếu nó không thành công, nó sẽ  
nhn srequest ‘’ và mt đối tượng ngoi lexception’.  
- timeout (number) : smili giây để đợi cho phn hi.  
2.2.2 JSONRequest.get  
JSONRequest.get là mt HTTP get request, ly phn hi, và phân tích chúng  
thành mt giá trJavaScipt. Nếu phân tích thành công, nó strli giá trscript đã  
request. Khi request, không có chng thc và cookie được gi.  
Và như trên, nó cũng chỉ được sdng vi giá trJSON-encoded.  
JSONRequest.get cn ba tham s:  
- url (string) : URL để GET v.  
- done (function(requestNumber, value, exeption)): Hàm được gi khi request  
hoàn thành. Nếu request thành công, hàm snhn srequest  
requestNumber’ và giá trvalue’ trv. Nếu nó không thành công, nó sẽ  
nhn srequestNumber’ và mt đối tượng ngoi lexeption’.  
- timeout (number): smili giây để đợi cho sphn hi.  
2.2.3. JSONRequest.cancel  
Mt request có thbxóa bi JSONRequest.cancel vi srequest. Nó không  
trli gì c. Không có gì đảm bo rng yêu cu skhông được gi ti server khi lnh  
xóa request được to:  
JSONRequest.cancel(requestNumber);  
- Nếu request vn trong hàng đợi, nó sbxóa thàng đợi.  
- Nếu request trong tiến trình, mt sthsẽ được to để loi bnó.  
- Nếu request không được tìm thy, thì lnh trên sẽ được bqua.Khi thông báo  
được xóa thành công, hàm callback ‘done’ ca request sẽ được gi vi mt  
thông đip ngoi lca “cancelled”.  
2.2.4. Bo mt  
- JSONRequest có mt vài tính năng cho phép nó được min chính sách Same  
Origin.  
JSONRequest không gi hoc nhn cookie hoc password trong HTTP  
headers. Điu này tránh trường hp li chng thc.  
JSONRequest chlàm vic vi tài liu JSON. Mt request sbli nếu  
server không phn hi ti POST vi tài liu JSON.  
17  
Phn hi sbtchi trphi chúng cha mt loi ni dung JSONRequest.  
Điu này làm cho nó không thsdng JSONRequest để ly dliu từ  
server không an toàn.  
JSONRequest có rt ít dliu li.  
JSONRequest tích lũy độ trngu nhiên trước khi hành động trên các  
request mi khi các request trước đó bli. Điu này làm vô tác dng tn  
công phân tích thi gian và tn công tchi dch v. JSONRequest chlàm  
mt vic: nó trao đổi dliu gia các script ti trang web vi JSON server  
ti web.  
- JSONRequest cho phép kết ni, nhưng vi mt shn chế:  
Content-type theo chai hướng application/jsonrequest.  
Dliu thân POST strong định dng JSON.  
Sphn hi dliu strong định dng JSON.  
Kí tmã hóa theo hai hướng là UTF-8.  
2.2.5. Hot động ca JSON  
Hình 18. Hot động ca JSON  
Bước1: Browser yêu cu trang HTML tHTTP server domain: www.domain-1.com  
Bước2: Trang HTML được ly về ở bước1 cha JavasCript có nhim vtrc  
tiếp browser để yêu cu file JavaScript mt HTTP server thhai trên domain:  
18  
Bước3: JavaScript ly vtbước2 được thc thi browser, nó thay đổi các  
thành phn ca trang web và có liên kết ti các JavaScript khác.  
Bước4: JavaScript mi này sgi và yêu cu được cung cp dch v. Sau khi  
yêu cu được thc hin, server sgi trli hàm JavaScript callback vi đối tượng  
JSON và các tham sca nó. Hàm Callback làm cho mi quan hgia JSON client và  
dch vtrnên linh hot hơn.  
Bước5: Hàm Callback được thc thi và ni dung trang web được cp nht.  
2.3. Cross domain sdng Flash  
Phương pháp này ít phbiến hơn phương pháp proxy, nó khai khác khnăng  
truyn thông cross-domain mà flash có thể đưa ra. Ging như JavaScript, Flash chỉ  
cho phép request ti cùng domain, nhưng nó cũng cho phép request ti domain third  
party mà cho phép nó sdng file crossdomain.xml.  
Nếu bn làm vic rt nhiu vi các file Flash, thì mt sphiên bn cũ ca Flash  
yêu cu chính sách để truyn thông gia các domain. Ví d, nếu bn có mt file đang  
ti ni dung tdomain khác, bn sgp phi li.  
Hình 19. Li 2044  
File crossdomai.xml là mt file XML đơn gin đưa cho Flash Player quyn để  
truy cp dliu tdomain khác, nó được đặt ti root ca webserver:  
19  
<?xml version="1.0"?>  
<!DOCTYPE cross-domain-policy SYSTEM  
policy.dtd">  
<cross-domain-policy>  
<allow-access-from domain="*" />  
</cross-domain-policy>  
Như bn chú ý trên, du hoa th(*) có nghĩa rng tt c.  
Hoc để to mt sgii hn  
<?xml version="1.0"?>  
<!DOCTYPE cross-domain-policy SYSTEM  
policy.dtd">  
<cross-domain-policy>  
<allow-access-from domain="www.mysite.com" to-  
ports="25" />  
</cross-domain-policy>  
2.4. Subspace  
Subspace - mt cơ chế truyn thông đa min, cho phép truyn thông mt cách  
hiu ququa các domain mà không mt tính bo mt – có thcung cp struyn  
thông tin cy như ban đầu cho web mashup.  
Sdng JavaScript, nhng tính năng bo mt khác nhau được áp dng trong  
nhng data-passing phare khác nhau, trong các trình duyt khác nhau:  
Cross-subdomain communication.  
Cross-domain code Authorization.  
Cross-domain frame access.  
- Truyn thông cross-subdomain  
Đối vi JavaScript, mt site được định danh như là bba: protocol, hostname,  
port, ví d:  
=> site khác  
Sdng JavaScript, bn có thphân tách dliu gia các domain có cùng mt  
hu t. Nếu hai domain mun chia sgiao tiếp mt hu tthng nht, chúng ta sử  
20  
dng thuc tính JavaScript document.domain để cung cp struy cp đầy đủ ti mi  
domain. Ví d:  
a.example.com b.example.com có thể được thay đổi biến document.domain  
thành example.com, cho phép chúng chuyn dliu và mã JavaScript khi chy.  
Hn chế: hu tố được thay đổi không quá dài để thành ‘top level domain name’  
(VD: ‘.com’) ngăn struyn thông qua domain bt kì.  
- Schp nhn mã cross-domain  
Chính sách same-origin ngăn chn các mã khi vic chuyn gia các domain.  
Mt hàm được định nghĩa trong mt domain skhông được gi bi mã trong domain  
khác, do đó không có smơ hvdomain đã thc hin hot động đó khi sdng bo  
mt same-origin để kim tra.  
Closure: hàm được định nghĩa trong thân hàm khác, tham chiếu ti biến trong  
vùng khi nó được to, chkhông phi khi nó được gi.  
Bng vic cài đặt biến document.domain, mt trang web có thchuyn tiếp mt  
closure ti mt frame trong nhng domain khác. Có hai la chn:  
Authorization động: closure kế tha các đặc quyn bo mt ca trang mà đã gi  
nó. Phương pháp tiếp cn này tương ng cho đường link kim soát ca ngăn xếp gi.  
(Opera và Sapari). VD: khi www.site1.com gi tài liu twww.site2.com, trình duyt  
thi hành tính năng site1 và kim soát nó.  
Authorization tĩnh: closure kế tha quyn bo mt ca trang nơi mà closure được  
to. Stiếp cn này có thể được thc hin bi đường link truy cp ca hàm thay thế link  
kim soát. (IE và Firefox). VD: khi www.site1.com gi tài liu twww.site2.com, trình  
duyt sgi tính năng site2 đã được thi hành trên toàn btài liu.  
Authorization động có thể được mô phng trong mt trình duyt authorization  
tĩnh bi vic gi eval da trên dliu chui nhn tnhng site khác nhưng ngược li  
thì không đúng: authorization động không thddàng mô phng trong trình duyt  
authorization tĩnh.  
- Truy cp frame cross-domain  
Có mt vài chính sách browser :  
Quyn (Firefox và Safari)  
Hn chế (Opera)  
Khnăng cu hình, “Yes” là mc định (IE6)  
Cu hình nhưng bhn chế, “No” là mc định (IE7)  
21  
2.4.1. Subdomain  
Mt vài site mun loi b‘www’ ra khi subspace ca mình, ví dụ  
www.mashup.com thành mashup.com. Khi chy site ti www.mashup.com và ti  
mashup.com , có thchúng ta coi như cùng mt tên và tht s, chúng cùng chti mt  
nơi. Nhưng để gi trong mt Ajax, nó xét đến domain. Do đó, nếu bn to mt li gi  
Ajax ti cùng mt server, không nên đặt mã domain như mt thành phn mà như mt  
đường dn.  
Hn chế ca Subspace: frame có thkhi động mt stn công denial-of-  
service trên trình duyt. Ví d, mt web service không đúng có thể định hướng trình  
duyt xa mashup site, hoc hin thmt chui vô tn hp báo động, ngăn người sử  
dng không sdng được site.  
Mt khnăng có thkhác là ngun dliu hoc gadget không tin cy có thể  
xut hin mt ca smi yêu cu người sdng cho nhãn quyn ca h. Vì đó, nó là  
quan trng để subdomain được đặt tên và người sdng có khnăng xác định rõ ràng  
web service đã kim soát nó  
2.4.2. Đơn Web Service  
- Cài đặt Phrase  
Để to mt kênh subspace gia hai site, www.mashup.com  
và  
webservice.mashup.com, thc hin vic giao thc cài đặt cái đưa ra trang chai  
domain cùng truy cp ti đối tượng subspace javascript.  
Giao thc cài đặt dưới đây (miêu tthình 2.6) là được hin chmt ln khi trang  
đầu tiên được ti, và không cn thiết để khi động li khi cn dliu yêu cu nhiu hơn.  
Mediator frame là mt subdomain ca frame chính và nó giao tiếp ddàng  
(document.domain); Mt frame khác được to dưới mediator frame và gidliu được gi  
tunstrusted website. Frame này giao tiếp vi mediator frame nhưng không phi là frame  
chính; Mediator frame có thgiao tiếp vi chai, unstrusted frame top frame-frame chính.  
Hình 20. Gi ra dliu tdomain đơn unstrusted 3rd-party.  
22  

Tải về để xem bản đầy đủ

pdf 43 trang yennguyen 14/05/2025 150
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Cross-domain Ajax cho các ứng dụng web mashup", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_cross_domain_ajax_cho_cac_ung_dung_web_mashup.pdf