调试:IE6 + SSL + AJAX + post form = 404错误

时间:2008-08-08 03:38:58

标签: ajax debugging internet-explorer ssl internet-explorer-6

设置:
有问题的程序试图通过AJAX调用将表单数据发布到与调用者相同的包中包含的目标过程。这适用于使用安全连接(HTTPS)的站点。这里使用的技术是PLSQLDOJO JavaScript库。开发工具是basically a text editor

代码段:

> function testPost() {  
>>    dojo.xhrPost( {  
             url: ''dr_tm_w_0120.test_post'',  
             form: ''orgForm'',  
             load: testPostXHRCallback,  
             error: testPostXHRError  
            });  
      }  

> function testPostXHRCallback(data,ioArgs) {  
>>          alert(''post callback'');  
          try{  
          dojo.byId("messageDiv").innerHTML = data;  
          }  
          catch(ex){  
                if(ex.name == "TypeError")  
                {  
                  alert("A type error occurred.");  
                }  
          }   
          return data;  
       }         
> 
function testPostXHRError(data, ioArgs) {    
>>          alert(data);  
          alert(''Error when retrieving data from the server!'');  
          return data;  
       }    

问题:
使用IE6(整个用户群使用)时,从服务器发回的响应是404错误。

观察:
该程序在Firefox中运行良好 调用程序无法针对同一包中的任何程序 调用程序可以定位到外部站点(http,https) 包中的其他AJAX调用不是表单数据的帖子工作正常 我搜索了 internets 并咨询了高级技术团队成员,并没有发现任何令人满意的解决问题的方法。
*在Dojo支持论坛上试过Q&A

问题:
您推荐哪些故障排除技巧?
您建议使用哪些故障排除工具进行HTTPS分析? 关于问题可能是什么假设? 任何不是完全(坏)黑客的解决方法的想法?

版。解决方案
lomaxx,thx为fiddler小费。你不知道如何获得它并将其用作调试工具是多么棒。启动后,这就是我发现的以及我如何修复它(至少在短期内):

> ef Fri, 8 Aug 2008 14:01:26 GMT dr_tm_w_0120.test_post: SIGNATURE (parameter names) MISMATCH VARIABLES IN FORM NOT IN PROCEDURE: SO1_DISPLAYED_,PO1_DISPLAYED_,RWA2_DISPLAYED_,DD1_DISPLAYED_ NON-DEFAULT VARIABLES IN PROCEDURE NOT IN FORM: 0

在看到来自服务器的消息后,我再次向Fiddler踢了一下,看看还能从中学到什么。发现有一个WebForms选项卡,显示Web表单中的值。你不知道吗,上面的“xxx_DISPLAYED_”字段就在其中。

我还不太明白为什么这些字段存在,因为我没有在网络PLSQL代码中明确创建它们。但我现在明白目标程序必须将它们作为参数包含在内才能正常工作。同样,这只适用于IE6,因为Firefox工作正常。

那么,短期的答案和黑客来解决它。希望在这方面做一点工作可以更好地理解这里的基本面。

1 个答案:

答案 0 :(得分:4)

第一个停靠点是启动Fiddler并分析进出浏览器的数据。

看看标题,实际调用的url和传递给AJAX方法的params(如果有的话),看看它们在到达服务器之前是否一切都很好。

如果这一切看起来都没问题,有没有办法可以通过日志记录或AJAX方法跟踪来验证它实际上是在点服务器?

ed:我要尝试的另一件事就是使用非基于ajax的调用在服务器上调用AJAX方法,并分析fiddler中的流量并比较两者。