我使用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()
答案 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
如果没有在评论中告诉我。