2012-04-23 24 views
0

我正在尝试将JQuery $.post添加到Java Servlet中。我将Tomcat服务器集成到 Apache中,并且Tomcat服务器与Apache的$.post连接在同一台机器上。 (Java Servlet接收它)。JQuery发布到Tomcat Servlet

如果Tomcat servlet位于远程计算机上,并且如果我输入$.post(http://ip:8080/App/MyServlet,...),则该servlet不会收到任何内容。

如果我在我的机器上制作JQuery $.post我有这样的$.post(Myservlet,.....)。 如果我尝试这样:$.post(http://localhost:8080/App/MyServlet,...)它不起作用。

我应该如何使JQuery $.post远程uri?

Tomcat Servlet的远程URI应该如何显示?

感谢,

+1

有跨域限制: http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascript – binarious 2012-04-23 11:05:30

回答

2

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

这意味着只有在发出ajax请求的页面域中才能发出GET或POST请求。

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

所以,如果你能控制的远程服务器上,或者,如果谁做管理员需要请求打开服务器/域foriegn Ajax请求,则服务器只需要发送下面的头:

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

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

如果在远程服务器上无法控制,这里有sneakier办法绕过同源策略:

  1. ,从AJAX请求到本地URL与参数,并将其传递它跟着servlet,并且让那个代理脚本返回servlet响应的任何东西。

  2. JSONP(这我还是模糊的,诚实的,但jQuery的AJAX文档进入它)

  3. 脚本注入,在这里您可以利用一个事实,即脚本元素的src不受各项─限制起源政策。

的3,我认为首先是最安全的,最hackish的,最诚实的(这么说),但JSONP已经成为拉动jQuery的跨域请求的简单和容易的方法。

+2

你忘了说'访问控制 - 允许来源' – binarious 2012-04-23 11:11:20

+1

哦,该死!那些最不起眼,最有意为之的人!加上尴尬。 – Anthony 2012-04-23 11:16:06

+0

补充说,谢谢你的抬头。如果您认为我对标题的解释不够深入,请随时发表评论。 – Anthony 2012-04-23 11:25:33