我正在使用 jQuery.post()
方法将请求发送到另一台服务器并从该服务器获取响应。
$.post('http://www.example.com:9876/example/myServletURL',{param1:param1}).done(function(data)
{
alert(data);
});
但我没有收到服务器的任何响应。我已经在服务器上检查过,我收到了 post
方法发送的请求。
如果将 URL 更改为位于同一 war 文件(同一域)
中的 Servlet
,我将收到响应。
我搜索了一下,发现这可能是因为same origin policy .
我的问题是,如何使用 jQuery.post()
方法允许跨域请求。
编辑1
用于部署的两台不同服务器的域相同,但端口号不同。(用于 php 的 Apache Web 服务器和用于 java 的 Glassfish)
解决方案
我已放置以下代码以允许在我的 servlet 中进行跨域请求。
response.addHeader("Access-Control-Allow-Origin", "*");
最佳答案
您无法更改请求中的跨域请求策略,因为这会破坏同源策略的安全目的。发送响应的服务器必须启用 CORS(跨源资源共享)。响应 header 必须包含 'Access-Control-Allow-Origin': '*'
。 *
允许任何站点访问服务器,如果您不想向所有人授予访问权限,可以用单个站点代替。如果您可以控制要发帖的服务器,http://enable-cors.org/index.html是关于如何为您的请求/响应启用 CORS 的丰富资源。
关于javascript - 使用 jQuery post 从另一台服务器调用 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20812040/