Относительный 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) {
    ...
});
Другие вопросы по тегам