0

我正在尝试将 JQuery 制作$.post为 Java Servlet。我将 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,...)它不起作用。

我应该如何将 JQuery 制作$.post为远程 uri?

Tomcat Servlet 的远程 uri 应该是什么样子?

谢谢,

4

1 回答 1

2

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

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

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

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

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

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

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

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

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

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

在这 3 个中,我认为第一个是最安全、最少黑客和最诚实的(可以这么说),但 JSONP 已成为在 jquery 中拉取跨域请求的简单方法。

于 2012-04-23T11:10:22.053 回答