Относительный URL jQuery не работает
У меня проблемы с jQuery. Но что странно, так это то, что он будет работать над веб-контейнером, но не над другим. Моя проблема в том, что я делаю AJAX-вызов на сервер, но он не может создать правильный URI (он делает это только в Oracle Weblogic, он был протестирован и работает на Tomcat 7 и Wildfly).
По сути, мой код выглядит так:
$.get(
"api/data/drawing?drawing=1&user=anon",
{},
function(data) {
...
});
На Wildfly и Tomcat он будет правильно называть URL:
http://192.168.1.100:8080/MyApp/api/data/drawing?drawing=1&user=anon
Но на Weblogic он будет вызывать:
http://192.168.1.100:8080/api/data/drawing?drawing=1&user=anon
Хотя приложение действительно сопоставлено с /MyApp (который является идентификатором артефакта войны). Я могу сказать, потому что статические ресурсы, такие как изображения и ссылки, будут указывать на правильный URI.
У меня сейчас нет вариантов, потому что мы в затруднении. Я хотел бы сказать, что не используйте Weblogic или жестко кодируйте URL-адреса, но мне это кажется хакерским. И более того, если клиент когда-либо переместит веб-сервер, у нас будут проблемы. Пожалуйста, помогите мне разобраться в этом =(. Я полагаю, что это проблема Weblogic (или, возможно, их сервер неправильно настроен), а не проблема с моим кодом. Поэтому я понимаю, что вы не сможете мне помочь, но это того стоит выстрел правильно? Спасибо заранее!
2 ответа
Похоже, вы не установили context-root
для вашего приложения в Weblogic. Вы захотите установить его в своем application.xml или 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>
Вы можете увидеть хороший пример здесь, в документации Oracle
Не могли бы вы просто установить переменную для baseURL:
var baseUrl = "http://192.168.1.100:8080/MyApp/";
$.get(
baseUrl + "api/data/drawing?drawing=1&user=anon",
{},
function(data) {
...
});