2011-07-26 19 views
1

我认为Mod-Auth-SSPI与我的ajax系统冲突。请找到下面的代码 -sspi模块是否与ajax冲突?如何解决它?

new Ajax.Request(ajaxUrl, 
{ 
    method:'post', 
    parameters: 'json='+json, 
    onSuccess: 
    function(transport) 
    { 
    if (transport.responseText.isJSON())  
    displayInfo(transport.responseText.evalJSON(true)); // error occurs  
    else  
    alert('Damn! It's not working...'); 
    }, 
    onFailure: 
    function() 
    { 
     alert(mateErrAjaxUrl) 
    } 
}); 

它总是返回警报('该死!它不工作...')。这意味着displayInfo不能正常工作或与某些内容发生冲突。任何人都可以告诉我如何解决它?

请注意,Mod-Auth-SSPI按照我的需要正常工作。

+0

您是否检查过响应是否为有效的Json? – toopay

回答

1

我有一个类似的问题,与Ajax和Internet Explorer(V6和8)。 如果您观看网络流量,您可以看到IE通过发送触发NTLM授权的空POST请求(content-length:0)开始,然后发送正确的POST与正文。

当IE使用已建立的TCP/IP连接到Apache/mod_auth_sspi时,会发生错误。使用默认设置,mod_auth_sspi让空POST请求通过,因为连接已被验证。而你的应用程序会收到一个空的POST请求,这可能会让你感到困惑。

其中一个解决办法是添加指令“SSPIPerRequestAuth在”在你的Apache的配置,因为在这里说:
http://wiki.apache.org/httpd/ModAuthSSPI
(在写这篇文章的时候,在mod_auth_sspi的源/ DOC是不幸的是没有最新)

另一个,在旧的mod_sspi安装,是添加'MaxKeepAliveRequests 2'和'KeepAliveTimeout 1',这是肮脏的,但可以来帮助。