使用jQuery post从另一台服务器调用URL

时间:2013-12-28 07:12:21

标签: javascript jquery apache glassfish cors

我使用jQuery.post()方法将请求发送到另一台服务器并从该服务器获取响应。

$.post('http://www.example.com:9876/example/myServletURL',{param1:param1}).done(function(data)
{
    alert(data);
});

但我没有收到服务器的任何回复。我已经检查了服务器,我收到了post方法发送的请求。

如果将网址更改为同一Servlet的{​​{1}},我会收到回复。

我搜索过,发现这可能是因为same origin policy

我的问题是我应该如何使用war file(same domain)方法允许跨域请求。

EDIT1

Domain是相同的,但端口号是不同的,用于部署的两个不同服务器。(用于php的Apache web服务器和用于java的Glassfish)

解决方案

我已经使用以下代码来允许我的servlet中的跨域请求。

jQuery.post()

3 个答案:

答案 0 :(得分:2)

您无法更改请求中的跨域请求策略,因为这会破坏相同源策略的安全性目的。必须在发送响应的服务器上启用CORS(跨源资源共享)。响应标头必须包含'Access-Control-Allow-Origin': '*'*允许任何站点访问服务器,如果您不想授予每个人访问权限,则可以用单个站点替换。如果您可以控制要发布的服务器,http://enable-cors.org/index.html是如何为您的请求/响应启用CORS的绝佳资源。

答案 1 :(得分:1)

我在过去的项目中所做的是将数据从jQuery发布到我自己的服务器上的ASPX页面,然后将数据发布到真正的目标服务器。此页面还响应了目标服务器的响应。

我调用了PostData.aspx页面,并将目标网址作为转义的查询字符串参数发送,使其足够柔和,可以用于其他项目。

答案 2 :(得分:1)

您实际上可以在服务器上允许跨域请求,但要非常小心,因为不是非常安全友好的方式

我使用PHP执行此操作,您可以通过在请求中发送一些标头来允许跨域。您可以在PHP中执行相同的操作。

可能是这个链接可以帮助你=> CrossDomain ajax request using CORS

如果没有在评论中告诉我。