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

The Setting:
The program in question tries to post form data via an AJAX call to a target procedure contained in the same package as the caller. This is done for a site that uses a secure connection (HTTPS). The technology used here is PLSQL and the DOJO JavaScript library. The development tool is basically a text editor.

Code Snippet:

> 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;  
       }    

The Problem:
When using IE6 (which the entire user-base uses), the response sent back from the server is a 404 error.

Observations:
The program works fine in Firefox.
The calling procedure cannot target any procedures within the same package.
The calling procedure can target outside sites (both http, https).
The other AJAX calls in the package that are not posts of form data work fine.
I've searched the internets and consulted with senior-skilled team members and haven't discovered anything that satisfactorily addresses the issue.
*Tried Q&A over at Dojo support forums.

The Questions:
What troubleshooting techniques do you recommend?
What troubleshooting tools do you recommend for HTTPS analyzing?
Any hypotheses on what the issue might be?
Any ideas for workarounds that aren't total (bad) hacks?

Ed. The Solution
lomaxx, thx for the fiddler tip. you have no idea how awesome it was to get that and use it as a debugging tool. after starting it up this is what i found and how i fixed it (at least in the short term):

> 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 _ ”字段在里面。

我不明白为什么这些字段存在,因为我没有在web PLSQL 代码中显式创建它们。但我现在明白,目标程序必须包含它们作为正确工作的参数。再说一次,这仅仅是针对我的 IE6 ,因为Firefox运行良好。

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

0

1 答案

第一个停靠港是启动 Fiddler 并分析往返于浏览器的数据。

看看头文件,实际被调用的url以及传递给AJAX方法的参数(如果有的话),看看它们在访问服务器之前是否看起来都不错。

如果这一切看起来不错,有什么方法可以通过日志记录或AJAX方法追踪来验证它是否真的打到了服务器上?

ed:我想尝试的另一件事是设置一个测试页,以使用基于非ajax的调用来调用服务器上的AJAX方法,并分析提琴手中的流量并比较两者。

0
额外
“提琴手是为HTTP。”有趣的...在头版上说:“Fiddler 2已经取代了Fiddler 1.x. Fiddler 2支持调试HTTPS流量,一个更丰富的可扩展性模型,并且可以通过并行安装Fiddler 1.x如果需要的话请注意,Fiddler 2需要.NET Framework 2.0版本。“我仍然认为它值得开火:)
额外 作者 lomaxx,