免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1788 | 回复: 0
打印 上一主题 下一主题

ajax的用户身份验证(以及ajax和soap的区别) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-17 17:09 |只看该作者 |倒序浏览

XmlHTTPRequest组件有这样的行为:
1)和服务器会话时,它直接将用户现有的cookie信息加入到会话的http
header中。
2)如果服务器发生了跳转,例如服务器返回如下信息:
HTTP/1.1
302 Found
Date:
Thu, 01
Dec 2005
02:00:24
GMT
Server:
Apache/1.3.33 (Unix) PHP/4.4.0 mod_ssl/2.8.24
OpenSSL/0.9.7e
X-Powered-By:
PHP/4.4.0
Location:
testpost.php
那么XmlHTTPRequest的行为将依赖用户浏览器。一般来说XmlHTTPRequest不能得到这个消息头,也不能得到http
302的状态码,而是直接继续访问跳转页面Location:
testpost.php,如果访问成功,直接返回http状态码200,并读取得到此页面的文本输出。
Ie中没有相关配置,只会进行上述行为。
Opera中有“是否允许自动重定向”设置。如果用户不允许自动重定向则xmlHTTPRequest能接收到302信息,xmlHttpRequest不会继续跳转。
Firefox中有一个选项network.http.redirection-limit(20),这个选项是用户所允许的重定向次数。如果设置成0,那么很遗憾,XmlHTTPRequest接收不到任何信息。
『演示代码』

var x =
sajax_init_object();
x.open("GET","testjump.php",true);
function
_callback() {                    if (x.readyState != 4)return;
   sajax_debug("received "
               + x.responseText
               +"\nstatus:"
               
+x.status+"");
   alert("调用结束");
}
if
("[XMLHttpRequest]"==x.constructor){  
x.onload = _callback ;}
else{  x.onreadystatechange = _callback
;}
x.send("");



所以我们可以得出结论:
1)在dhtml的环境里,ajax的身份验证和用户浏览器是等同的,ajax依赖的XmlHTTPRequest和服务器的会话http
header会自动包含浏览器中的cookie.
所以从传统网站过渡到ajax,在用户身份验证上不必花费太大力气。
2)另外,XmlHTTPRequest组件更像浏览器提供给用户的一个组件,而不像一个纯粹的socket组件,它包装了一些行为,例如上面提到的它将用户cookie自动加入http
header到请求信息中,再如刚才提到的它自动读取服务器uri发生跳转以后的页面。
结论:在使用ajax做web应用的时候,基本上和传统web程序身份验证方式相同。只是不能使用自动重定向的方法让没有cookie的用户跳转到登录页面。比较好的方案是使用错误处理的方式,当用户还没有登录时向客户端返回一个错误码,客户端js分析错误码进行跳转。

SOAP的用户身份验证:
我见过的SOAP身份验证有两种,一种是每次请求时,将用户名和密码放到http的header中,这是HTTP标准协议中对于http
header的应用,当然,这是明文的,如果需要加密的话,只能使用ssl,而每次请求都使用ssl显然会影响速度。另一种是使用session,例如MS DotNet
WebService有它的session机制 。但是如果用php实现这些,恐怕要花费很大精力。

结论:ajax的服务端更像一个简单的rpc,虽然和soap有些类似,但是实现一个支持ajax的服务端是很简单的,但是要实现soap就复杂的多了。
但是从业务逻辑的观点来看,ajax的服务端可以做到和soap的服务端类似,成为一种专门提供业务逻辑操作的远程调用接口。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12425/showart_75876.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP