我正在尝试为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应该如何?
谢谢,
答案 0 :(得分:2)
Jquery在浏览器(客户端)中运行,这意味着它受浏览器的同源策略的约束,这是一件好事。
这意味着只能对发出ajax请求的页面域进行GET或POST的ajax请求。
有两种方法可以绕过这项政策。第一个是为请求提供远程服务器保证,第二个是浏览浏览器的同源策略。
因此,如果您可以控制远程服务器,或者管理员确实接受打开服务器/域的请求以发出ajax请求,那么服务器只需要发送以下标头:
Access-Control-Allow-Origin: your-local-domain.org
浏览器返回响应标头,看到请求页面在上面的列表中,并允许响应通过。
如果您无法控制远程服务器,可以采用以下方法来解决同源策略:
使用参数向本地URL发出ajax请求,并将其传递给servlet,并让该代理脚本返回servlet响应的任何内容。
JSONP(老实说,我仍然很模糊,但是jquery的ajax文档会进入它)
脚本注入,您可以利用脚本元素src
不受同源策略限制的事实。
在3中,我认为第一个是最安全,最不诚实,最诚实(可以这么说),但JSONP已成为在jquery中提取跨域请求的简单方法。