Ajax POST到另一台服务器 - 克服跨域限制
问题描述:
是通过使用代理来实现此目的的唯一正确方法吗?我正在研究一个Clicktail克隆(网络用户交互&鼠标跟踪分析),到目前为止我的脚本会跟踪所有的用户交互,并将它们发布到我的服务器并保存到数据库,但问题是如果将此脚本添加到将位于另一个域中的客户端,则由于跨域脚本限制,Ajax帖子将失败。Ajax POST到另一台服务器 - 克服跨域限制
从阅读这里,有一些黑客,但我很想避免它们。看起来代理是唯一的方法。但是这反过来又给我带来了一个更大的问题,因为任何希望使用我的Clicktail克隆的客户端都必须设置一个代理,并在其上添加javascript。对于一个拥有PHP站点的网站管理员来说,这将是直接的,因为我可以提供脚本,他们只是在服务器上激活脚本,但对于.net站点,他们必须将它包含在他们的解决方案中并重新编译,也许我可以提供一个DLL,但即使这将不得不被引用。
我一直在阅读关于此HTML 5 window.postMessage
- >和这个jquery插件http://benalman.com/projects/jquery-postmessage-plugin/这看起来不错,我认为不能使用它来回放捕获的用户交互,使用iframe但它没有,(至少我无法看到)如何解决跨域AJAX发布的问题。 如果您处于我的处境,您是否可以发布您的可能解决方案?
答
看来跨域POST是真的可能在你的情况。 这里How do I send a cross-domain POST request via JavaScript?讨论了使用Access-Control-Allow-Origin配置接收服务器的可用性。 之后,你可以通过jQuery做POST:
$.ajax({
type: 'POST',
url: 'https://to.com/postHere.php',
crossDomain: true,
data: '{"some":"json"}',
dataType: 'json',
success: function(responseData, textStatus, jqXHR) {
var value = responseData.someKey;
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});
祝你好运!