【问题标题】:Call tomcat server war url from external html page using ajax使用ajax从外部html页面调用tomcat服务器war url
【发布时间】:2016-01-31 15:29:10
【问题描述】:

我正在使用 apache-tomcat-7.0.67webapps 文件夹 War name ::

下的已部署 jar
Account

war 是使用 spring-boot 创建的,所以没有明确定义 web.xml,但 url 映射已经使用 @RequestMapping(value="/submitForm",method = RequestMethod.POST) 定义 当我从 PostmanJMeter (如http://localhost:8080/Account/submitForm)点击此 URL 时,请求到达服务器并返回响应。
现在我有另一个文件夹,其中只包含 html 文件,这些文件不像战争那样

它有一些 html 文件,其中包含 ajax 使用 javascript 之类的调用

$.ajax({
                type: 'POST',
                url: '/Account/submitForm',
                 success: function (resp) {
                 console.log(resp);
                },
                error: function(e) {
                console.log('Error: ',e);
                }  
            });

但是即使使用 url: 'https://localhost:8080/Account/submitForm' ,请求也永远不会到达服务器,谁能告诉我如何解决这个问题,我完全卡住了。

【问题讨论】:

  • 你怎么知道请求“从未到达服务器”?将文件放在webapps/html 中意味着它们是从/Account 上下文中的servlet 上下文(“Web 应用程序”)提供的。
  • 我是从 Firebug 的 Net 面板中了解到的,它显示状态 Aborted ,对不起,我没有像你所说的那样 means they are being served from a servlet context ("web app") from the /Account context 请详细说明

标签: javascript java ajax spring tomcat


【解决方案1】:

也许你不应该使用你的战争名称

我在这里使用这样的请求

$.ajax( ... url: "../GUI/ResponseTime", ...

我班上的这个注释

@WebServlet(name = "ResponseTime", urlPatterns = {"/GUI/ResponseTime"})

不管文件的战争名称如何,它都可以工作

【讨论】:

  • 不,它会按上下文名称映射,实际问题是javascript的跨域(CORS)策略,它不允许在我的战争之外从html文件调用任何url。无论如何感谢您的建议
【解决方案2】:

实际的问题是 javascripts 跨域源策略,它不允许来自我的 war 文件之外的静态 html 文件的任何 ajax 调用。我通过添加

解决了这个问题
<filter>
 <filter-name>CorsFilter</filter-name>
 <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>CorsFilter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>`

在tomcat 的web.xml 文件中,它允许跨域源调用。 spring 也支持跨源,正如我在 cors-support-in-spring-framework
的一个很好的链接中找到的那样,这是来自 W3C 的规范 W3 cors specification

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多