É possível acessar um método do meu controller anotado com @Post a partir de um domínio diferente do domínio da minha aplicação? Por exemplo, uma aplicação mobile realizando POST.
é possível…
Levantei essa questão pois tenho uma aplicação num domínio X, os métodos anotados com GET eu consigo acessar tranquilamente, mas quando tento acessar os POST obtenho um Bad Server - HTTP Error.
Minha chamada:
$.ajax({
type : 'POST',
url : 'http://ipdodominio:8080/MinhaApp/service/salvarXpto',
username : 'User',
password : 'pass',
data : {text : varText},
beforeSend : function() {
alert('antes de enviar');
},
success : function(txt) {
alert('envio sucesso');
},
error : function(txt) {
alert('erro envio ' + JSON.stringify(txt));
}
});
A mensagem de erro:
erro envio {“readyState”:0,“status”:0,“statusText”:"[Exception… “Access to restricted URI denied” code: “1012” nsresult: “0x805303f4 (NS_ERROR_DOM_BAD_URI)” location: “http://localhost:8080/MinhaAppLocal/jqgrid4.3.2/js/jquery-1.7.2.min.js Line: 4”]"}
Meu método sendo chamado:
@Post("/service/salvarXpto")
public void salvarXpto(final String text) {
//Processamento...
}
Quando faço esse POST de um form interno à aplicação, ele funciona. Será que existe alguma configuração pra liberar acesso externo?
o Browser por padrão só deixa vc fazer requisições ajax para o mesmo domínio, por questões de segurança.
para fazer ajax para outro domínio vc pode usar JSONP (que é sempre GET) ou usar CORS (o browser manda uma requisição OPTIONS pro servidor, que tem que responder que aceita requisições ajax de outro domínio)
Lucas, entendi.
Então vou partir para outra abordagem.
Obrigado!