URL relativo do jQuery não funciona
-
21-12-2019 - |
Pergunta
Estou tendo problemas com jQuery.O que é estranho, porém, é que ele funcionará em um contêiner da web, mas não em outro.Meu problema é que estou fazendo uma chamada AJAX para o back-end, mas ele não consegue construir o URI correto (só faz isso no Oracle Weblogic, foi testado e funciona no Tomcat 7 e no Wildfly).
Então, essencialmente, meu código fica assim:
$.get(
"api/data/drawing?drawing=1&user=anon",
{},
function(data) {
...
});
No Wildfly e no Tomcat ele chamará corretamente a URL:
http://192.168.1.100:8080/MyApp/api/data/drawing?drawing=1&user=anon
Mas no Weblogic ele chamará:
http://192.168.1.100:8080/api/data/drawing?drawing=1&user=anon
Embora o aplicativo esteja realmente mapeado para /MyApp (que é o ID do artefato da guerra).Posso dizer porque recursos estáticos como imagens e links apontarão para o uri correto.
Estou sem opções agora porque estamos em uma crise.Eu adoraria dizer que não use o Weblogic ou codifique os URLs, mas isso me parece hackeado.E mais ainda, se o cliente realocar o servidor web, teremos problemas.Por favor me ajude a descobrir isso =(.Imagino que seja um problema do Weblogic (ou talvez o servidor não esteja configurado corretamente) e não um problema com meu código.Então, eu sei que você pode não ser capaz de me ajudar, mas vale a pena tentar, certo?Desde já, obrigado!
Solução
Parece que você não definiu seu context-root
para sua aplicação no Weblogic.Você desejará configurá-lo em seu application.xml ou weblogic.xml:
<weblogic-web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app
http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"
xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
<context-root>MyApp</context-root>
</weblogic-web-app>
Você pode ver alguns bons exemplos aqui no Documentos Oracle
Outras dicas
Você poderia simplesmente definir uma variável para um baseURL:
var baseUrl = "http://192.168.1.100:8080/MyApp/";
$.get(
baseUrl + "api/data/drawing?drawing=1&user=anon",
{},
function(data) {
...
});