Depuração:IE6 + SSL + AJAX + formulário de postagem = erro 404
-
08-06-2019 - |
Pergunta
A configuração:
O programa em questão tenta postar dados do formulário por meio de uma chamada AJAX para um procedimento de destino contido no mesmo pacote do chamador.Isso é feito para um site que usa uma conexão segura (HTTPS).A tecnologia usada aqui é PLSQL e a DOJO Biblioteca JavaScript.A ferramenta de desenvolvimento é basicamente um editor de texto.
Fragmento de código:
> 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;
}
O problema:
Ao usar o IE6 (que toda a base de usuários usa), a resposta enviada de volta do servidor é um erro 404.
Observações:
O programa funciona bem no Firefox.
O procedimento de chamada não pode ter como alvo nenhum procedimento dentro do mesmo pacote.
O procedimento de chamada pode ter como alvo sites externos (http, https).
As outras chamadas AJAX no pacote que não são postagens de dados de formulário funcionam bem.
Eu procurei o internet e consultei membros da equipe experientes e não descobri nada que resolva o problema de forma satisfatória.
*Testado Perguntas e respostas nos fóruns de suporte do Dojo.
As questões:
Quais técnicas de solução de problemas você recomenda?
Quais ferramentas de solução de problemas você recomenda para análise de HTTPS?
Alguma hipótese sobre qual poderia ser o problema?
Alguma idéia de soluções alternativas que não sejam hacks totais (ruins)?
Ed.A solução
lomaxx, obrigado pelo violinista dica.você não tem ideia de como foi incrível conseguir isso e usá-lo como uma ferramenta de depuração.depois de iniciá-lo, foi isso que descobri e como consertei (pelo menos no curto prazo):
> 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
Depois de ver aquela mensagem do servidor, procurei um pouco mais pelo Fiddler para ver o que mais poderia aprender com ele.Descobri que existe uma guia WebForms que mostra os valores no formulário da web.Você não saberia disso, o "xxx_DISPLAYED_
"os campos acima estavam nele.
Ainda não entendo por que esses campos existem, porque não os criei explicitamente na web PLSQL
código.Mas agora entendo que o procedimento alvo deve incluí-los como parâmetros para funcionar corretamente.Novamente, isso ocorre apenas no caso de IE6
para mim, pois o Firefox funcionou bem.
Bem, essa é a resposta de curto prazo e um truque para consertar.Esperançosamente, um pouco mais de trabalho nesta área levará a uma melhor compreensão dos fundamentos que estão acontecendo aqui.
Solução
A primeira parada seria ligar Violinista e analise os dados que entram e saem do navegador.
Dê uma olhada nos cabeçalhos, o URL realmente sendo chamado e os parâmetros (se houver) sendo passados para o método AJAX e veja se tudo parece bem antes de chegar ao servidor.
Se tudo parecer ok, existe alguma maneira de verificar se ele está realmente atingindo o servidor por meio de registro ou rastreamento no método AJAX?
Ed:outra coisa que eu tentaria é criar uma página de teste para chamar o método AJAX no servidor usando uma chamada não baseada em Ajax e analisar o tráfego no violinista e comparar os dois.