1

我认为 Mod-Auth-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 根据我的需要正常工作。

4

1 回答 1

1

我在使用 Ajax 和 Internet Explorer(v6 和 8)时遇到了类似的问题。如果您观察网络流量,您可以看到 IE 首先发送一个触发 NTLM 身份验证的空 POST 请求(内容长度:0),然后发送带有完整正文的正确 POST。

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

解决方案之一是在您的 Apache 配置中添加指令“SSPIPerRequestAuth On”,如此处所述:
http
://wiki.apache.org/httpd/ModAuthSSPI (在撰写本文时,源代码中的 /doc mod_auth_sspi 很遗憾不是最新的)

另一种方法是在旧的 mod_sspi 安装中添加“MaxKeepAliveRequests 2”和“KeepAliveTimeout 1”,这很脏但可以提供帮助。

于 2011-09-29T16:13:58.183 回答