Java JQuery发布到Tomcat Servlet

Java JQuery发布到Tomcat Servlet,java,jquery,servlets,Java,Jquery,Servlets,我正在尝试将JQuery$.post发布到Java Servlet。我将Tomcat服务器集成到 如果Tomcat服务器与Apache服务器在同一台机器上,则$.post成功。 (Javaservlet接收它) 如果Tomcat servlet位于远程机器上,并且如果我使用$.post(http://ip:8080/App/MyServlet,…)servlet没有接收任何内容 如果我在我的机器上做一个JQuery$.post,我有这样的$.post(Myservlet,…)。 如果我这样尝试:

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

如果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应该是什么样子


谢谢,

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

这意味着GET或POST的ajax请求只能向发出ajax请求的页面的域发出

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

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

Access-Control-Allow-Origin: your-local-domain.org
浏览器返回响应头,看到请求页面在上面的列表中,并允许响应通过

如果您无法控制远程服务器,以下是绕过同源策略的更隐蔽的方法:

  • 使用参数向本地url发出ajax请求,并将其传递给servlet,然后让代理脚本返回servlet响应的内容

  • JSONP(老实说,我对它还不太清楚,但jquery的ajax文档就在其中)

  • 脚本注入,利用脚本元素的
    src
    不受同源策略限制这一事实


  • 在这三种方法中,我认为第一种是最安全、最不黑客、最诚实的(可以这么说),但是JSONP已经成为jquery中跨域请求拉取的简单易行的方法。

    有跨域限制:你忘了提到
    访问控制允许源代码
    哦,该死!其中最不粗俗、最有目的的一个!加上尴尬。加上,谢谢你的提醒。如果您认为我对标题的解释不够深入,请随时发表评论。我可以控制远程服务器,所以我需要先发送标题,然后发送数据?我理解得好吗?@Dragos-没错。如何发送也取决于您。当请求域(和/或端口、查询字符串、页面等)具有特定值时,可以让HTTP服务器始终将其发送回所有请求或请求,也可以让servlet脚本在执行任何其他操作之前将其抛出。通过http服务器这样做的好处是1)脚本维护更少,2)可移植性更强,3)让其他远程请求者知道谁可以发出远程请求不是一个好主意,因为这可能会导致欺骗尝试。