JQuery发布到Tomcat Servlet

时间:2012-04-23 10:58:49

标签: java jquery servlets

我正在尝试为Java Servlet创建一个JQuery $.post。我将Tomcat服务器集成到了 Apache,如果Tomcat服务器与Apache在同一台机器上,则$.post成功。 (Java Servlet接收它)。

如果Tomcat servlet在远程计算机上,并且如果我使$.post(http://ip:8080/App/MyServlet,...),则servlet没有收到任何内容。

如果我在我的机器上制作了一个JQuery $.post,我就喜欢这个$.post(Myservlet,.....)。 如果我这样做:$.post(http://localhost:8080/App/MyServlet,...)它不起作用。

我应该如何向远程uri创建JQuery $.post

Tomcat Servlet的远程uri应该如何?

谢谢,

1 个答案:

答案 0 :(得分:2)

Jquery在浏览器(客户端)中运行,这意味着它受浏览器的同源策略的约束,这是一件好事。

这意味着只能对发出ajax请求的页面域进行GET或POST的ajax请求。

有两种方法可以绕过这项政策。第一个是为请求提供远程服务器保证,第二个是浏览浏览器的同源策略。

因此,如果您可以控制远程服务器,或者管理员确实接受打开服务器/域的请求以发出ajax请求,那么服务器只需要发送以下标头:

Access-Control-Allow-Origin: your-local-domain.org

浏览器返回响应标头,看到请求页面在上面的列表中,并允许响应通过。

如果您无法控制远程服务器,可以采用以下方法来解决同源策略:

  1. 使用参数向本地URL发出ajax请求,并将其传递给servlet,并让该代理脚本返回servlet响应的任何内容。

  2. JSONP(老实说,我仍然很模糊,但是jquery的ajax文档会进入它)

  3. 脚本注入,您可以利用脚本元素src不受同源策略限制的事实。

  4. 在3中,我认为第一个是最安全,最不诚实,最诚实(可以这么说),但JSONP已成为在jquery中提取跨域请求的简单方法。