文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ajax的用户身份验证(以及ajax和soap的区别)

ajax的用户身份验证(以及ajax和soap的区别)

时间:2006-02-17  来源:dulao5


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的服务端类似,成为一种专门提供业务逻辑操作的远程调用接口。
               
               
               

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载