JQuery CORS e Redirecionamentos
Usando o JQuery 1.8.2
Estou fazendo uma solicitação de CORS para um aplicativo de um AppServer (Frente) para outro AppServer (De volta) servidor. Quando faço as seguintes chamadas do Ajax deFrente, a resposta 302 (verificação de segurança) deDe volta é honrado, mas meu cookie JSESSIONID não é armazenado:
$.ajax({
url : url,
dataType : 'html',
success : function(data, status, xhr) {
$(dataContainer).append(data);
},
complete: function(xhr, status, error) {
if (xhr.status != 200) {
$.logger(xhr.getResponseHeader('Location'));
}
}
});
Agora, se eu fizer a mesma chamada, mas adicionar o withCredentials, meu JSESSIONID está sendo armazenado corretamente, mas o redirecionamento 302 está sendo eliminado. Tanto o Chrome quanto o Firefox (versões mais recentes de ambos) simplesmente param de processar a solicitação.
$.ajax({
xhrFields: { withCredentials: true },
url : url,
dataType : 'html',
success : function(data, status, xhr) {
$(dataContainer).append(data);
},
complete: function(xhr, status, error) {
if (xhr.status != 200) {
$.logger(xhr.getResponseHeader('Location'));
}
}
});
Eu tento obter o cabeçalho do local de redirecionamento fora do objeto xhr, mas está vazio.
Estou definindo o seguinte em todas as respostas que saemDe volta:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
response.setHeader("Access-Control-Max-Age", "1728000");
response.setHeader("Access-Control-Allow-Headers", "Cookie,X-Requested-With");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Expose-Headers", "Location");
Obviamente, vou limitar a origem quando / se eu conseguir fazê-lo funcionar.
Alguém sabe o que é necessário para que isso funcione com o JQuery? É um problema de JQuery ou um experiente com todas as solicitações de Ajax + CORS?